Redis基础数据结构
String(字符串)
- 字符串最大长度是512M
- 计数(incr、incrby等),若value是整数,范围大小是signed long(有符号long型),minValue = -2^63,maxValue = 2^63-1
List(列表)
- 有序,内部实现是链表,插入、删除时间复杂度O(1);索引定位查询慢,时间复杂度O(n)
- 当做异步队列使用,push、pop命令实现
- 底层存储:linkedlist、quicklist、ziplist
hash(字典)
- 数组 + 链表
- 渐进式rehash策略
set(集合)
- 无序唯一的键值对,去重
zset(有序集合)
- 它是一个set,保证了内部value的唯一性;它也可以给每个value赋予一个score,代表这个value的排序权重
- zset内部的排序功能是通过「跳跃列表」数据结构来实现的
数据结构小结
容器型数据结构,它们共享下面两条通用规则:
-
create if not exists
如果容器不存在,那就创建一个,再进行操作。比如 rpush 操作刚开始是没有列表的,Redis 就会自动创建一个,然后再 rpush 进去新元素。
-
drop if no elements
如果容器里元素没有了,那么立即删除元素,释放内存。这意味着 lpop 操作到最后一个元素,列表就消失了。