1、String字符串对象
字符串对象的编码是int、raw和embstr。如果一个字符串对象保存的是整数值,那么encoding是int,如果保存的是字符串值,并且长度大于32个字节,那么encoding是raw,否则是embstr
2、list列表对象
列表对象的编码是ziplist和linkedlist。
使用ziplist的条件(可以通过命令修改)
1、列表对象保存的所有字符串长度都小于64字节
2、元素数量小于512个
3、hash哈希对象
哈希对象的编码可以是ziplist和hashtable
使用ziplist的条件(可以通过命令修改)
1、哈希对象保存的键和值的字符串长度都小于64字节
2、元素数量小于512个
4、set集合对象
集合对象的编码是intset和hashtable
使用intset的条件(可以通过命令修改)
1、集合对象保存的值都是整数值
2、元素数量小于512个
5、zset有序集合对象
有序集合对象的编码是ziplist(列表)和skiplist(跳跃表和字典)
使用ziplist的条件(可以通过命令修改)
1、有序集合对象保存的所有元素成员的长度小于64字节
2、元素数量小于128个
6、数据共享
redis在初始化的时候会创建一万个字符串,这些对象包含了从0到9999的所有整数值,当服务器用到了这些字符串时,服务器就会使用这些共享对象,而不是新建对象。