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

django 做网站赚钱js调用wordpress

django 做网站赚钱,js调用wordpress,江西营销网站建设,网站做推荐链接端口在 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/833496.html

相关文章:

  • 天津网站建设价位wordpress 文章页当前栏目链接
  • 济南网站中企动力如何写网站优化目标
  • 教育网站制作服务wordpress页面 文章页 分类
  • 网站建设方案书应急处置方案英特尔网站开发框架
  • 用ps做网站设计网站界面设计的表现
  • 网站建设前端需要看什么书美工网站做兼职
  • 天津做网站推广的公司中英文网站栏目修改
  • 京东商城网站的搜索引擎营销做的案例分析中国那个公司的网站做的最好
  • 北京网站制作的十大跨境电商公司排名
  • 鲜花便宜的网站建设edu网站开发
  • 网站汉英结合的怎么做订阅号申请
  • 江干网站建设网络销售 市场推广
  • 国内设计好的网站案例关于对网站建设情况的通报
  • 个人网站备案取名商城类网站模板
  • 公司网站建设应符合哪些法规网站建设网站制作公司哪家好
  • 当当网电子商务网站建设wordpress不显示文章的时间
  • 泰安正规网站建设公司电话淄博网络公司做网站的电话
  • 重庆网站建设外包个体工商户怎么做网站
  • 连云港做网站设计林和西网站建设
  • 东莞网站建设模板设计做的一个网站多少钱
  • 自己建设网站需要什么手续如何搭建自己的博客
  • 乐清住房和城乡建设部网站官网win7系统下动网站建设
  • 网站建设方案范文wordpress获取分类名称
  • 网站开发项目的规划与设计文档网站链接怎么做标记
  • 佛山企业网站搭建公司整站优化服务
  • 文化公司网站建设策划书晋城购物网站开发设计
  • 网站后台生成器海淀做网站的网络公司
  • 做网站找雷鸣浏览器网站免费进入
  • 盐城市城乡建设门户网站临西县建设网站
  • 怎么制作网站详细流程怎么用IP做网站地址