Redis 常用的数据结构有:string,list,hash,set,zset
String -------SDS(简单动态字符串)
SDS动态字符串时间复杂度O(1) SDS API安全,拼接字符串不会造成缓冲区溢出。因为SDS在拼接字符串之前会检查SDS空间是否满足安全,如果空间不够自动扩容,所以不会导致缓冲区溢出的问题。
list--------双向链表或压缩列表
-如果列表的元素个数小于512个(默认值),列表每个元素的值小于64字节(默认值)redis会使用压缩列表作为list类型的底层数据结构
-redis3.2版本之后list的底层结构只由quicklist实现了,替代了双向链表和压缩列表
hash---------压缩列表或哈希表
-哈希类型元素个数小于512,所有值小于64字节redis会使用压缩列表作为hash的底层数据结构;
-如果其他条件redis会使用哈希表作为hash类型的底层数据结构
set------哈希表或整数集合
-集合元素都是整数且元素个数小于512,redis会使用整数集合来作为set类型的底层数据结构;
如果集合中的元素不满足上面的需求,redis使用哈希表作为set的底层数据结构
zset-----------压缩列表和跳表
-元素小于128 元素值小于64字节>>>>>压缩列表
-不满足上面条件>>>>>>>>>>>>>>>>>跳表