当前位置: 首页 > news >正文

临海最火自适应网站建设营销型网站的好处

临海最火自适应网站建设,营销型网站的好处,网页游戏平台代理,临沂品牌网站制作1. Dict基本结构 Redis的键与值的映射关系是通过Dict来实现的。 Dict是由三部分组成,分别是哈希表(DictHashTable),哈希节点(DictEntry),字典(Dict) 哈希表结构如下图所…

1. Dict基本结构


Redis的键与值的映射关系是通过Dict来实现的。

Dict是由三部分组成,分别是哈希表(DictHashTable),哈希节点(DictEntry),字典(Dict)

哈希表结构如下图所示:由于会发生哈希冲突,所以entry个数可能会大于size
size总是2的n次方
![[Pasted image 20240402160110.png]]

哈希节点的结构如下图所示:
![[Pasted image 20240402160316.png]]

当我们向Dict添加键值对时,Redis首先根据key计算出hash值(h),然后利用h&sizemask(其实就是h对数组长度取余)计算元素应该存储到数组中哪个索引位置

建立一个哈希表,以及哈希节点,数组【1】中存入的是dictEntry的地址
![[Pasted image 20240402161433.png]]

如果遇到哈希冲突之后,就会进行头插法将新插入的节点放入首节点位置(因为新放入的数据预计会在较近的时间被访问,其次头插法的时间复杂度低)
![[Pasted image 20240402161629.png]]

dictEntry中的key和value大部分都是指针,指向String类型的对象

Dict(字典)的结构如下图所示:核心是dictht ht【2】用于在rehash时
![[Pasted image 20240402161714.png]]

所以整体Dict结构如下图所示:
![[Pasted image 20240402162000.png]]

2. Dict渐进式rehash


Dict中的hashtable就是数组结合单向链表的表现,当集合中元素较多时,必然会导致哈希冲突变多,链表过长,则查询效率大大降低。

Dict在每次新增键值对时都会检查负载因子(LoadFactor=used/size),满足以下两种情况就会出发哈希表扩容:

  • 哈希表的LoadFactor>=1,并且服务器并没有执行BGSAVE或者BGREWRITEAOF等后台进程
  • 哈希表的LoadFactor>=5;
    Dict除了扩容以外,每次删除元素时,也会对负载因子做检查,当LoadFactor<0.1时&&size>4,会做哈希表收缩

Dict的rehash并不是一次性完成的,如果Dict中包含数百万的entry,要在依次rehash完成,极有可能导致主线程阻塞。因此Dict的rehash是分多次,渐进式的完成,因此称为渐进式rehash,流程如下

  1. 计算新hash表的size,值取决于当前要做的是扩容还是收缩
  • 如果是扩容,则新size为第一个大于等于dict.ht[0].used+1的2^n
  • 如果是收缩,则新size为第一个大于等于dict.ht[0].used的2^n(不得小于4)
  1. 按照新的size申请内存空间,创建dictht,并赋值给dict.ht[1]
  2. 设置dict.rehashidx=0,标示开始rehash
  3. 每次执行新增,查询,修改,删除操作时(也就是说每次访问dict时执行一次rehash),都检查一下dict.rehashidx是否大于-1,如果是,则将dict.ht[0].table[rehashidx]的entry链表rehash到dict.ht[1],并且将rehashidx++,直到dict.ht[0]的所有数据都rehash到dict.ht[1]
  4. 将dict.ht[1]赋值给dict.ht[0],给dict.ht[1]初始化为空的哈希表,释放原来的dict.ht[0]
  5. 将rehashidx赋值为-1,代表rehash结束
  6. 在rehash过程中,新增操作,直接写入ht[1],查询,修改和删除则会在dict.ht[0]和dict.ht[1]依次查找并执行,这样可以确保ht[0]的数据只减不增,随着rehash最终为空
http://www.yayakq.cn/news/527099/

相关文章:

  • 阿里云的网站接入方式开源阅读app
  • 关于单位网站建设的报告WordPress 文章模板制作
  • 成都sem优化宁波怎样优化关键词
  • 怎样制作微信网站链接网上做头像用什么网站
  • 做微商自己建网站合适吗安阳房产信息网
  • 万网是什么网站哪个博客可以做单页网站
  • logo图案素材免费网站北京建网站公司
  • 网站默认首页文件顺序安装wordpress xampp
  • 淄博网站搜索排名浙江建设信息港打不开
  • 建网站开发广州设计网站建设
  • 茶社网站开发与设计的开题报告泰安市建设职工培训中心网站进不去
  • 益阳营销型网站建设霸州做网站shijuewang
  • wordpress建站需要多久汕头seo排名收费
  • 网站怎样绕过360认证如何做好品牌宣传
  • 怎么搭建钓鱼网站怎么修改网站模板
  • 阿里巴巴的网站二维码怎么做湖南常德文理学院
  • 合肥万户网站建设辽宁建设厅官方网站
  • 常用来做网站首页的文件名国家军事
  • 电子上网站开发做中学数学教案有哪些好的网站
  • 跨国网站怎么做上海临平路网站建设
  • seo网站优化软件价格网站建设的源代码有什么作用
  • 网站开发类的合同范本网站建设项目可行性
  • 大型网站开发用什么样式网站如何防止重登录
  • 外贸柒夜网站建设wordpress网站的根目录在哪里
  • 哪个网站可以接活做信阳网站建设培训
  • 东莞网上销售网站建设免费域名怎么申请
  • dede免费手机网站模板餐饮小程序开发
  • 深圳建设公司网站有关商业网站的风格特征
  • 建筑工程招投标网站热搜榜排名前十
  • 免费手机建网站平台店铺设计餐饮