「61」redis hash解读
¶前序
hash在日常开发中上镜频率还是比较高,例:
1 | 1、java中的Hashmap... |
¶好奇点
- Redis的hash结构到底是怎么存的呢?
- Redis hash如果做到高效的?
- Rehash操作,do what?
- “XX” vs ht「hashtable」?Why?
一个个来看吧:
¶hash结构:
1 | typedef struct dictht { |
用一张图来描述
¶redis的hash为何高效?
讲道理,不是最高效的,但是适合大众场景。
1 | hset hello w 1 |
这2条命令在redis中的存储方式决定了是否高效。
其实Redis提供了👉🏻两种存hash编码的结构:
¶类型转换关键点
1 |
|
¶rehash
- 产生原因:
1 | 负载因子不在一个合理的范围内,简单的说: |
- 触发的时机
1 | 1、定时任务。 |
具体rehash过程,后续会讲到。
¶ZIPLIST VS HASHTABLE
todo 数据采集中…
理论上分析:
ZIPLIST: get操作是 O(N)+1
HASHTABLE: get操作是 O(1)