Redis的对象和数据结构

Redis数据库的键值对(key-value)都是由对象(object)组成。

对象总共有5种:

  1. 字符串对象(string)
  2. 列表对象(list):有序链表,value能重复,可通过下标取元素,可在头/尾进行插入或删除。使用场景:
  3. 哈希对象(hash):HashMap
  4. 集合对象(set):不重复、无序、不能通过下标取元素。
  5. 有序集合对象(zset)

而对象则是由6种主要数据结构创建:

  1. 简单动态字符串(SDS):相比C字符串,SDS做了优化:直接获取字符串重读、避免缓冲区溢出、空间预分配。
  2. 链表:双端无环链表,可以快速的在表头和表尾插入和删除元素,但查找复杂度高,是列表的底层实现之一。未提供查询元素是否存在于链表中的接口。
  3. 字典:又称为:符号表、关联数组、映射(map),字典使用哈希表作为底层实现,采用murmurhash高效hash计算,链表头插法解决hash冲突,渐进式rehash提升性能。
  4. 跳跃表:是有序数据结构,效率和平衡树相当,实现简单,按层建造,底层是有序链表,上层是高度不等的快速查询通道,层高1~32。
  5. 整数集合:底层为有序不重复的数组。当键数量小于512并且键值为整数时集合使用整数集合作为底层实现,节约内存。
  6. 压缩列表:当列表只包含少量的小整数或短字符串就是用压缩列表作为底层实现,节约内存。

详细解析:https://blog.csdn.net/javahongxi/article/details/79500956

猜你喜欢

转载自blog.csdn.net/Anenan/article/details/115313249
今日推荐