Redis底层数据结构

非常好的文章

一、String

SDS:

  • 字符可修改
  • 预分配机制,避免频繁复配
  • 计算length只需要O(1)
  • 可以存储二进制数据

二、hash

数据少:ziplist

  • 内存利用率特别高,因为他是一个内存连续的,但是插入十分麻烦
    数据多:dict
    -非常想java8的hashMap,但是他的渐进式hash思想非常优雅

三、list

quicklist:
-本身是个普通的双链表,但是每个实体确实个ziplist。算是综合双链表和ziplist的优点

四、set

redis的集合对象set的底层存储结构特别神奇,我估计一般人想象不到,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。
 set的底层存储intset和hashtable是存在编码转换的,使用intset存储必须满足下面两个条件,否则使用hashtable,条件如下:

结合对象保存的所有元素都是整数值
集合对象保存的元素数量不超过512个

四、sort set

ziplist:可以实现O(logn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值