Redis读书笔记

152 阅读1分钟

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 操作到最后一个元素,列表就消失了。