TC官方文档翻译07----内存HASH数据库API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
来源:互联网 发布:问答平台源码 编辑:程序博客网 时间:2024/06/05 16:55
/**
* 转载请注明出处, 由于个人技术能力有限, 英语水平欠缺,
* 有翻译不合适或错误的地方, 请纠正,
* 希望不要因为我的错误误导您, 希望您的智慧可以加入.
* @translator: selfimpr
* @mail: lgg860911@yahoo.com.cn
* @blog: http://blog.csdn.net/lgg201
*/
内存HASH数据库API
typedef struct { //内存hash数据库
void**mmtxs; //全局锁对象
void*imtx; //基于路径的锁对象
TCMAP**maps; //内部TCMAP对象
intiter; //maps的迭代位置
}
TCMDB *tcmdbnew();
创建一个桶大小为TCMDBDEFBNUM(65536)的数据库.
TCMDB *tcmdbnew2(uint32_t bnum);
创建有指定bnum的桶数组的数据库. 实际上是创建了TCMDBMNUM(默认8)个TCMAP对象, 每个map中的桶大小为bnum / TCMDBMNUM +17.
void tcmdbdel(TCMDB *mdb);
删除指定的内存数据库
void tcmdbput(TCMDB *mdb, const void *kbuf,int ksiz, const void *vbuf, int vsiz);
通过对key进行hash得到要存入的map, 然后调用map的tcmapput插入
void tcmdbput2(TCMDB *mdb, const char*kstr, const char *vstr);
tcmdbput的字符串版本.
bool tcmdbputkeep(TCMDB *mdb, const void*kbuf, int ksiz, const void *vbuf, int vsiz);
向数据库中插入一条记录, 如果已经存在, 则无操作
bool tcmdbputkeep2(TCMDB *mdb, const char*kstr, const char *vstr);
tcmdbputkeep的字符串版本
void tcmdbputcat(TCMDB *mdb, const void*kbuf, int ksiz, const void *vbuf, int vsiz);
向数据库中插入一条记录, 如果已经存在, 则将新的值连接到原始值末尾
void tcmdbputcat2(TCMDB *mdb, const char*kstr, const char *vstr);
tcmdbputcat的字符串版本
bool tcmdbout(TCMDB *mdb, const void *kbuf,int ksiz);
从数据库中删除指定key的元素
bool tcmdbout2(TCMDB *mdb, const char*kstr);
tcmdbout的字符串版本
void *tcmdbget(TCMDB *mdb, const void*kbuf, int ksiz, int *sp);
从数据库中检索指定key对应的值, sp用来记录值的大小.
char *tcmdbget2(TCMDB *mdb, const char*kstr);
tcmdbget的字符串版本
int tcmdbvsiz(TCMDB *mdb, const void *kbuf,int ksiz);
返回指定key对应的值的内存大小
int tcmdbvsiz2(TCMDB *mdb, const char*kstr);
tcmdbvsiz的字符串key版本
void tcmdbiterinit(TCMDB *mdb);
迭代器初始化, 首先通过tcmapiterinit初始化每个map的迭代器, 然后重置mdb的iter
void *tcmdbiternext(TCMDB *mdb, int *sp);
获取下一条记录, sp将记录这条记录的值的大小
char *tcmdbiternext2(TCMDB *mdb);
tcmdbiternext的字符串版本
TCLIST *tcmdbfwmkeys(TCMDB *mdb, const void*pbuf, int psiz, int max);
获取当前数据库中所有和指定key(pbuf至pbuf+psiz的内存内容)相同(也就是说以指定key开头)的所有key, 如果指定max, 就只获取max个, 该匹配是逐个从8个map里去查找
TCLIST *tcmdbfwmkeys2(TCMDB *mdb, constchar *pstr, int max);
tcmdbfwmkeys的字符串版本
uint64_t tcmdbrnum(TCMDB *mdb);
返回当前数据库的记录数
uint64_t tcmdbmsiz(TCMDB *mdb);
返回当前数据库的内存占用
int tcmdbaddint(TCMDB *mdb, const void*kbuf, int ksiz, int num);
对数据库中指定key对应的值加num存储, 并返回增加后的值.
double tcmdbadddouble(TCMDB *mdb, constvoid *kbuf, int ksiz, double num);
tcmdbaddint的double版本.
void tcmdbvanish(TCMDB *mdb);
清除当前数据库中的所有记录
void tcmdbcutfront(TCMDB *mdb, int num);
移除数据库中的前num条记录. 在实际的移除中, 可能移除的并不是前num条. 而是通过num / TCMDBMNUM + 1计算到要从每个map中移除多少条记录, 然后通过map的tcmapcutfront接口进行移除
- TC官方文档翻译07----内存HASH数据库API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译08----内存树数据库API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译05----Hash Map对象API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译09----内存池对象API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译02----基础API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译03----可扩充字符串API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译04----列表对象API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译06----Ordered Tree对象API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译10----其他API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译11----文件操作API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译12----编码API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译01----TokyoCabinet简介(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- Tokyo Cabinet Hash数据库存储和索引结构
- Tokyo Cabinet TC 源码学习笔记
- Tokyo Cabinet TC 源码学习笔记
- Tokyo Cabinet
- Tokyo Cabinet
- tokyo cabinet
- 在Fedora中使用飞鸽传书
- 我爱世界杯
- TC官方文档翻译06----Ordered Tree对象API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- struts-default.xml位置未知的问题
- crontab 是不会根据用户自动搜索环境变量的
- TC官方文档翻译07----内存HASH数据库API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- Barracks at the base of mobile phones to read half the staff responsible for the content pipeline
- TC官方文档翻译08----内存树数据库API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- TC官方文档翻译09----内存池对象API(Tokyo Cabinet/Tokyo Tyarnt 文档系列)
- Mac OS X下CUDA Host端的编译选项设定
- 虚函数表的实质。
- 覆盖,隐藏,重载。
- SCA概念与应用实践(7.SCA装配模型--7.3 接口 interface)
- 实用 Ajax 工具函数