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

最近时政新闻seo综合诊断工具

最近时政新闻,seo综合诊断工具,宿迁市建设局网站,旅游网络网站建设方案在 Redis的数据结构(一),有提到Redis的dict结构中,有两个dictEntry的数组 之前只是提到,它是作为rehash时使用的,那为什么需要rehash呢? Redis是作为一个字典表存在的,它是基于hash表进行查找数据的 那它的…

在 Redis的数据结构(一),有提到Redis的dict结构中,有两个dictEntry的数组

之前只是提到,它是作为rehash时使用的,那为什么需要rehash呢?

Redis是作为一个字典表存在的,它是基于hash表进行查找数据的

那它的查找方式基于以下的步骤

  1. 通过hash算法,获取在当前hash表中的位置,时间复杂度 O(1)
  2. 如果有hash冲突,则遍历当前的位置的各个dictEntry,比对相应的值,时间复杂度为 O(N)

为什么会有O(N)的出现呢,因为hash算法会存在hash碰撞,当出现hash碰撞时,redis 通过使用链表的方式来存储对应的键值,如果熟悉Java中的HashMap的算法,其中的原理是类似的。

那要解决的问题,主要是尽量使hash 碰撞的概率减小,解决方案便是进行hash表的扩容。而上面提到的两个ht_table表就是为了在扩容或是缩容时使用的。来看下具体的源码

  1. rehash 的过程是从ht_table[0]中,按索引的位置,将该bucket中的列表逐个迁移到ht_table[1]中,这也是为了防止在迁移过程中长时间的阻塞导致redis不可用,并不是一次性进行迁移的,而是渐进式的
  2. 更新ht_table[0] 的 rehashidx的值
  3. 在ht_table[0]迁移完成后,会释放ht_table[0],同时重新将ht_table[1] 设置为 ht_table[0]

既然在rehash的过程,会将数据分散在两个表中,那在查找、新增、删除时是如何处理呢?来看下获取对应key的过程

这里会分别在两个ht_table中进行查找。

而新增呢?

从以上逻辑可以知道,当在插入时,只会插入到ht_table[1]中。

既然 rehash 是为了解决hash冲突的问题,那什么时候会触发呢?

在上面的流程里,有调用 _dictExpandIfNeeded 方法

这里可以总结下扩容的时机点:

  1. 未初始化,会进行初始化第一个ht_table
  2. 当key的总数大于hashtable的大小,接近1:1 时,并且 dict_can_resize为1 或是 负载因子大于5时
  3. 扩容规则是找到大于当前key的总数的最小2的指数倍
  4. 扩容以后,会将dict中的rehashidx的值会被置为0

扩容以后,后台线程(1秒钟执行10次)检查是否在扩容后,需要rehash,如果需要,则会调用以下的方法

或是新增、删除key时判断是需要rehash,之后会调用 _dictRehashStep进行迁移一个bucket

总结

Redis的rehash 是为了解决hash冲突带来的性能问题,将原来紧凑的数据分布,进行松散分布,可以使key的查找尽可能达到O(1)

http://www.dtcms.com/wzjs/319711.html

相关文章:

  • 建筑方案设计网站济宁网站建设
  • 网络工程专业是做什么工作的苏州关键词seo排名
  • 公安局网站建设的必要性房地产销售
  • 虾皮跨境电商app下载淘宝seo是什么意思啊
  • 公司做网站怎么推广2020年关键词排名
  • 做网站公司网站链接推广工具
  • wordpress首页阅读全文seo关键词优化公司哪家好
  • 竹溪县县建设局网站百姓网推广怎么收费标准
  • 珠海网站制作网络推广seo教学培训
  • 嘉兴秀宏建设公司网站淘宝引流推广怎么做
  • 苏州专业网站设计郑州网站推广哪家专业
  • 龙岩kk社区抖音seo代理
  • 汕头市建设局造价信息网站seo关键技术有哪些
  • 武汉市政府网站建设作者广告联盟赚钱app
  • 无锡知名网站制作线上广告接单平台
  • 做快餐 承包食堂的公司网站公司网站建设流程
  • asp网站做文件共享上传网站建设公司
  • 软件ui设计公司湖南靠谱的关键词优化哪家好
  • 织梦网站做中英文双语言版本产品推广方法
  • 上饶有哪些做网站的公司怎么免费注册域名
  • wordpress调用菜单代码seo百度快照优化公司
  • 深圳西乡网站制作成都百度网站排名优化
  • 大连网站建设服务公司可视化网页制作工具
  • wordpress have_posts()seo顾问服务公司
  • 美国政府网站建设网络营销课程个人总结范文
  • 河南省建设监理网站怎么宣传自己的店铺
  • 网站开发 语言快照网站
  • 兰州网站建设推广本站3天更换一次域名yw
  • 拼多多无货源网店怎么开seo优化什么意思
  • wordpress 图片滚动长沙seo