【Redis】5种基本类型对应的底层结构

目录

  • 1、介绍
  • 2、底层结构对照
  • 3、关键配置参数
  • 4、底层结构演进特点

1、介绍

Redis的基本类型有5种:string、list、hash、set、zset,不同类型对应的底层结构不同,接下来就简单介绍一下其采用的什么底层结构。

2、底层结构对照

数据类型 底层实现结构 触发条件
string 1、int编码(8字节长整型)
2、embstr编码(≤44字节字符串)
3、raw编码(>44字符串)
1、纯数字时用int
2、短字符串用embstr(内存连续)
3、长字符串用raw(分配独立内存)
list 1、ziplist(压缩列表)
2、linkedlist(双向链表)
3、quicklist(3.2+版本默认)
1、元素数量 ≤ list-max-ziplist-entries(默认512)
  所有元素大小 ≤ list-max-ziplist-value(默认64字节)
2、不满足ziplist条件
3、quicklist是ziplist+linkedist的混合结构
hash 1、ziplist
2、hashtable(哈希表)
1、字段数量 ≤ hash-max-ziplist-entries (默认512)
  所有元素大小 ≤ hash-max-ziplist-value(默认64字节)
2、不满足ziplist的使用条件
set 1、intset(整数集合)
2、hashtable
1、所有元素为整数且数量 ≤ set-max-intset-entries(默认512)
2、非整数或超量时转hashtable
zset 1、ziplist
2、skiplist(跳跃表)+ dict(字典)
1、元素数量 ≤ zset-max-ziplist-entries(默认128)
  所有元素大小 ≤ zset-max-ziplist-value(默认64字节)
2、不满足ziplist条件

3、关键配置参数

参数名 默认值 作用
list-max-ziplist-entries 512 list使用ziplist的最大元素数量
list-max-ziplist-value 64 list元素的最大字节数
hash-max-ziplist-enties 512 hash使用ziplist的最大字段数
hash-max-ziplist-value 64 hash字段值的最大字节数
set-max-intset-entries 512 set使用intset的最大元素数量
zset-max-ziplist-entries 128 zset使用ziplist的最大元素数量
zset-max-ziplist-value 64 zset元素最大字节数

4、底层结构演进特点

内存优化优先

小数据时优先使用紧凑结构(ziplist/intset)

自动转换机制

数据增长超出阈值时自动转为高性能结构

版本差异

1、list在3.2版本后统一用quicklist
2、Redis 7.0引入listpack替代部分ziplist场景

你可能感兴趣的:(Redis,redis,缓存)