zoukankan      html  css  js  c++  java
  • redis 底层数据结构

    简单动态字符串SDS

    • 包含字符串长度,剩余可用长度,字符数组
    • 用于Redis中所有的string存储

    字典(map)

    • 数组+链表形式,跟hashMap很像
    • 链地址法解决hash冲突
    • rehash使用新建hash数组链表进行数据rehash迁移,扩容是大于原数组长度的第一个2的n次幂
      渐进式rehash,就是不是一次性迁移完,而是在CRUD操作时,一点点迁移
    • 用于hash类型数据

    链表

    • 双端列表,直接有列表长度属性
    • 用于list类型数据

    跳跃表

    • 带分值得一种有序类链表结构
    • 每个节点中的level中存储分值相同的数据
    • 每个level中数据都有一个前进指针
    • 用于sortedSet类型

    整数集合

    • 底层是int数组,通过encoding决定int的长度,也可以在存储过程中进行长度升级,比如原先存储的16位整形,要存一个32位整数,就需要进行类型升级
    • 升级的好处就是类型灵活,节约内存
    • 用于数据量比较小并且都是整形的list类型

    压缩列表

    • 有内存字节数,节点个数,节点等属性的顺序型结构
    • 用于整形或者长度较短的字符串的list,hash等类型

    转载请注明出处 阿布的夏天

  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/treeskyer/p/14105450.html
Copyright © 2011-2022 走看看