写点什么

关于胖指针的应用

发布于: 2021 年 07 月 06 日

本文收集语言层面,数据表设计方面胖,冗余方面的技巧。

关于 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;
复制代码


发布于: 2021 年 07 月 06 日阅读数: 9
用户头像

还未添加个人签名 2018.03.30 加入

还未添加个人简介

评论

发布
暂无评论
关于胖指针的应用