各种数据结构以及特点,编码
数据结构 | 特点 | 编码 |
---|---|---|
String(字符串) | redis 最基本的类型,string 类型是二进制安全的 | REDIS_ENCODING_INT(如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示) REDIS_ENCODING_EMBSTR(如果字符串对象保存的是一个字符串值,并且这个字符串值的长度小于等于32字节,那么字符串对象将使用embstr编码) REDIS_ENCODING_RAW(如果字符串对象保存的是一个字符串值,并且这个字符串值的长度大于32字节,那么字符串对象将使用一个简单动态字符串) |
List(列表) | 两端可pop,push | REDIS_ENCODING_ZIPLIST(列表对象保存的所有字符串元素的长度都小于64字节并且列表对象保存的元素数量小于512个)/REDIS_ENCODING_LINKEDLIST(不满足ziplist的任一条件就采用该编码) |
Hash(哈希表) | 快速定位,相当于map | REDIS_ENCODING_ZIPLIST(哈希对象保存的所有键值对的键和值的字符串长度都小于64字节并且哈希对象保存的键值对数量小于512个)/REDIS_ENCODING_HT(不满足ziplist的任一条件就采用该编码) |
Set(集合) | 不重复的集合,非排序 | REDIS_ENCODING_INTSET(集合对象保存的所有元素都是整数值并且集合对象保存的元素数量不超过512个)/REDIS_ENCODING_HT(不满足INTSET的任一条件就采用该编码) |
SortedSet(有序集合) | 根据score排序的KV | REDIS_ENCODING_ZIPLIST(有序集合保存的所有元素成员的长度都小于64字节并且有序集合保存的元素数量小于128个)/REDIS_ENCODING_SKIPLIST(不满足ziplist的任一条件就采用该编码) |