redis常用数据结构
Redis 底层在实现下面数据结构的时候,会进行特定的优化,来达到节省时间/空间的效果。
内部结构
String
raw(最基本的字符串),int(实现计数功能,当value为整数的时候会用整数来存),embstr(针对短字符串的特殊优化)
hash
hashtable(最基本的hash表,不是java表中库中的那个),ziplist(压缩列表,在hash表元素比较少的时候优化成ziplist用来节省空间)
list
linkedlist(链表),ziplist(元素比较少的时候优化成ziplist用来节省空间)
set
hashtable(最基本的hash表,不是java表中库中的那个),intset(当集合中都是整数会优化成intset)
zset
skiplist(跳表,每个节点上又多个指针域的链表,可以达到查询元素为O(logn)),ziplist(元素比较少的时候优化成ziplist用来节省空间)
从 redis3.2 开始,引入了 quicklist 用来代替 list(同时兼顾了linkedlist,ziplist的有点)