博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis字典对象
阅读量:4093 次
发布时间:2019-05-25

本文共 670 字,大约阅读时间需要 2 分钟。

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]上进行添加操作

转载地址:http://vhiii.baihongyu.com/

你可能感兴趣的文章
Ardupilot飞控Mavlink代码学习
查看>>
这些网站有一些嵌入式面试题合集
查看>>
我觉得刷题是有必要的,不然小心实际被问的时候懵逼,我觉得你需要刷个50份面试题。跟考研数学疯狂刷卷子一样!
查看>>
我觉得嵌入式面试三要素:基础吃透+项目+大量刷题,缺一不可。不刷题是不行的。而且得是大量刷,刷出感觉套路,别人做题都做得是固定题型套路条件反射了,你还在那慢慢理解慢慢推是不行的,也是考研的教训。
查看>>
React + TypeScript 实现泛型组件
查看>>
TypeScript 完全手册
查看>>
React Native之原理浅析
查看>>
Git操作清单
查看>>
基础算法
查看>>
前端面试
查看>>
react 设置代理(proxy) 实现跨域请求
查看>>
通过试题理解JavaScript
查看>>
webpack的面试题总结
查看>>
实践这一次,彻底搞懂浏览器缓存机制
查看>>
Koa2教程(常用中间件篇)
查看>>
React Hooks 完全指南
查看>>
nvm 和 nrm 的安装与使用
查看>>
PM2 入门
查看>>
Flutter Animation动画
查看>>
Flutter混合开发二-FlutterBoost使用介绍
查看>>