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等类型

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

  • 相关阅读:
    知识图谱
    spring mvc踩坑记
    学习计划
    迷茫中看见一道曙光
    面试复习准备
    关于配置httpd2.4.18+php5.6
    notepad++ 等用正则表达式自动添加sql引号(宏)
    JDK1.8的HashMap实现原理和源码解析
    Java垃圾回收机制
    sql server 表分区
  • 原文地址:https://www.cnblogs.com/jackslj/p/11887488.html
Copyright © 2011-2022 走看看