本文共 670 字,大约阅读时间需要 2 分钟。
Redis 字典对象
- 字典对象,可以对应java中的map 即保存key-value键值对的一类对象
set k1 v1
- 在执行完上述命令后就在数据库中产生了一个键为 k1 值为 v1的键值对
- 字典实现
- 哈希表
- 哈希表节点
- 字典
- type
- dictType
- 计算哈希值
- 复制键
- 复制值
- 对比键
- 销毁键
- 销毁值
- privdata
- dictht ht[2]
- trehashidx
- 键冲突
- rehash
- 负载因子 load factor
- 动态扩展或收缩
- 扩展
- h1 = 2 ^n 大于等于 h[0]的第一个
- 释放h[0] 将h1 设置为h0 为下次rehash做准备
- 重新计算h0 的索引到h1上
- 收缩
- 自动扩展与收缩
- 目前没有在执行BGSAVE或者BGREWRITEAOF && 负载因子大于等于1
- 正在执行以上两个命令 && 负载因子大于等于5
- load factor = ht[0].used/ht[0].size
- load factor 小于0.1 自动收缩
- 渐进式rehash
- 分多次 渐进的完成
- rehashidx设置为0 标志rehash正式开始 rehashidx ++1
- 全部移除后 置为-1
- 查找一个键 先ht[0] 后在ht[1]
- 新增的统一在ht[1] 不会在ht[0]上进行添加操作
转载地址:http://vhiii.baihongyu.com/