码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 解决键冲突

时间:2020-12-28 11:43:33      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:rgb   lazy   next   数组   例子   哈希表   问题   表数   ini   

当有两个或以上数量的键被分配到了哈希表数组的同一个索引上面时, 我们称这些键发生了冲突(collision)。

Redis 的哈希表使用链地址法(separate chaining)来解决键冲突: 每个哈希表节点都有一个 next 指针, 多个哈希表节点可以用 next 指针构成一个单向链表, 被分配到同一个索引上的多个节点可以用这个单向链表连接起来, 这就解决了键冲突的问题。

举个例子, 假设程序要将键值对 k2 和 v2 添加到图 4-6 所示的哈希表里面, 并且计算得出 k2 的索引值为 2 , 那么键 k1 和 k2 将产生冲突, 而解决冲突的办法就是使用 next 指针将键 k2 和 k1 所在的节点连接起来, 如图 4-7 所示。

技术图片

 

 技术图片

 

 因为 dictEntry 节点组成的链表没有指向链表表尾的指针, 所以为了速度考虑, 程序总是将新节点添加到链表的表头位置(复杂度为 技术图片), 排在其他已有节点的前面。

Redis 解决键冲突

标签:rgb   lazy   next   数组   例子   哈希表   问题   表数   ini   

原文地址:https://www.cnblogs.com/tracydzf/p/14172698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!