摘要: 最多存储2^32-1个元素,支持取交集、并集、差集 内部编码: 整数集合(intset) typedef struct intset{ uint32_t encoding; 编码类型(int8_t, int16_t...) uint32_t length; 元素个数 int8_t contents[ 阅读全文
posted @ 2020-05-22 16:38 crossdunk 阅读(119) 评论(0) 推荐(0)
摘要: 概况: 不仅是提供出的数据结构(与字符串,列表。。。并列)(内层),也是redis存储的数据结构(外层)。 内部编码: a) 使用压缩列表 (ziplist): 元素数量小于512 所有key, value长度小于64字节 b) 使用哈希表 (hashtable): 由1个dict,2个dictht 阅读全文
posted @ 2020-05-20 21:55 crossdunk 阅读(117) 评论(0) 推荐(0)
摘要: 概况: list用来存储多个有序的字符串,一个列表可以存储2^32-1个元素。 Redis中的列表支持两端插入和弹出,并可以获得指定位置(或范围)的元素,可以充当数组、队列、栈等。 内部编码: 双端链表(linkedlist) typedef struct listNode{ struct list 阅读全文
posted @ 2020-05-20 21:10 crossdunk 阅读(111) 评论(0) 推荐(0)
摘要: 概况: 最大512MB 空间预分配: 若修改后长度小于1MB,则多分配现有sds空间 若修改后长度大于1MB,则多分配1MB 编码转换: int: value是整型时 embstr: <=39字节的字符串,只分配1次内存空间,redisObject和sds是连续的。只读,修改后只能是raw 大于39 阅读全文
posted @ 2020-05-20 20:39 crossdunk 阅读(93) 评论(0) 推荐(0)
摘要: 关于redis内部实现,涉及内存内存分配器(jemalloc),简单动态字符串(sds),5种对象类型及内部编码,redisObject。 dictEntry: 每个键值对都会对应这个结构,存储指向key、value的指针 key: 并不直接用字符串存储,使用sds结构 value: 都使用redi 阅读全文
posted @ 2020-05-20 11:37 crossdunk 阅读(511) 评论(0) 推荐(0)