Redis字典对象

Redis 字典对象

  • 字典对象,可以对应java中的map 即保存key-value键值对的一类对象
set k1 v1
  • 在执行完上述命令后就在数据库中产生了一个键为 k1 值为 v1的键值对
  • 字典实现
    • 哈希表
      • 数组
      • size
      • 掩码
      • 已用数量
    • 哈希表节点
      • key
      • value
      • next指针 链表
    • 字典
      • type
        • dictType
          • 计算哈希值
          • 复制键
          • 复制值
          • 对比键
          • 销毁键
          • 销毁值
      • privdata
      • dictht ht[2]
        • ht[0]
        • ht[1] rehash时使用
      • trehashidx
        • rehash索引
        • 没有进行rehash则为-1
      • 键冲突
        • redis 链地址法
        • hash算法
          • MurmurHash2算法计算哈希值
      • 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]上进行添加操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值