摘要: 概述 集合对象可以是intset或者hashtable(ht) intset是整数集合保存时就顺序往整数集合里面放 ht的话保存的方式是把集合中的value保存到dict的key上。这个dict的value都设置为null intset的条件: 保存的所有元素都是整数值 集合对象保存元素数量不超过5 阅读全文
posted @ 2019-11-22 16:41 六月过半 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 概述 哈希对象可以是ziplist或者hashtable(ht) ht好说,ziplist如何保存键值对,就是先把键对象放到队尾,再把值对象放到队尾,这样哥俩永远是挨着的。而且最新添加的永远在队尾处。 ziplist的使用条件: 所有键值对的键和值的字符串长度都小于64字节 键值对数量小于512个 阅读全文
posted @ 2019-11-22 16:04 六月过半 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 概述 列表对象编码可以使用ziplist或者linkedlist ziplist的条件: 列表对象保存的所有字符串元素的长度都小于64字节,列表对象使用压缩列表编码 and 列表对象保存的元素数量小于512个; linkedlist的条件: 以上都不满足 上面两个值可以通过参数来改变 list ma 阅读全文
posted @ 2019-11-22 14:30 六月过半 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 概述 字符串有三种编码,int、raw、embstr int: 字符串的值 是数字,并且long可以表示 raw:字符串的值大于39字节 embstr:字符串的值小于等于39字节 embstr和raw结构相同,唯一区别就是embstr做了优化,只有一次内存分配,是找了一块连续空间把redisobje 阅读全文
posted @ 2019-11-22 14:14 六月过半 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 简介 redisobject redis中的键、值都是一个对象,redisObject 1.具体的数据结构保存在ptr中 2.具体的类型保存在type中,取值如下 类型常量 | 对象的名称 | TYPE命令输出 | | REDIS_STRING | 字符串对象 | string REDIS_LIST 阅读全文
posted @ 2019-11-22 13:48 六月过半 阅读(338) 评论(0) 推荐(0) 编辑
摘要: Redis低级数据结构 简单动态字符串 一般的可变字符串用的都是这个,好处就是返回长度和剩余的长度都是O(1)的复杂度,另外自动提供扩容,不会溢出,另外因为free扩容后会自动预分配一些,阈值在不同情况下是不同的,最大多分配1MB的空间,因此减少了重分配次数,另外减少字符串长度时,除了清掉buf[] 阅读全文
posted @ 2019-11-22 13:07 六月过半 阅读(133) 评论(0) 推荐(0) 编辑