关于胖指针的应用
本文收集语言层面,数据表设计方面胖,冗余方面的技巧。
关于 C 语言中的字符串长度的统计,
复制代码
但是 Redis 中存储字符串,就做了特殊优化
复制代码
版权声明: 本文为 InfoQ 作者【Honey拯救世界】的原创文章。
原文链接:【http://xie.infoq.cn/article/01a9d20555e3e63dfbd0dda3d】。未经作者许可,禁止转载。
本文收集语言层面,数据表设计方面胖,冗余方面的技巧。
关于 C 语言中的字符串长度的统计,
unsigned int mystrlen(char* str) {
unsigned int c;
for (c = 0; *str != '\0'; c++, *str++);
return c;
}
但是 Redis 中存储字符串,就做了特殊优化
typedef struct redisObject {
//对象的数据类型,字符串对象应该为 OBJ_STRING
unsigned type:4;
//对象的编码类型,分别为OBJ_STRING、OBJ_ENCODING_INT或OBJ_ENCODING_EMBSTR
unsigned encoding:4;
//LRU_BITS为24位,最近一次的访问时间
unsigned lru:LRU_BITS; /* lru time (relative to server.lruclock) */
//引用计数
int refcount;
//指向底层数据实现的指针
void *ptr;
} robj;
版权声明: 本文为 InfoQ 作者【Honey拯救世界】的原创文章。
原文链接:【http://xie.infoq.cn/article/01a9d20555e3e63dfbd0dda3d】。未经作者许可,禁止转载。
还未添加个人签名 2018.03.30 加入
还未添加个人简介
促进软件开发及相关领域知识与创新的传播
评论