课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Redis数据库是大多数软件编程开发程序员在开发软件的时候会经常用到的一个数据库类型,而本文我们就通过案例分析来简单了解一下,Redis数据库字典的用法都有哪些。
应用
字典在Redis中应用非常广泛,Redis数据库就是使用字典作为数据底层的实现。对数据的增、删、改、查操作也是建立在字典之上操作。
在数据库中创建一个键为msg,值为hello的键值对,这个键值对就用字典来实现的。创建其他数据类型的键值对,比如list、hash、set、sortset也是用字典来实现的。
处理用来表示数据中的键值对,字典还是hash数据类型底层实现之一,比如一个hash数据类型website,包含100个键值对,这些键值对中的键是网址名称。
字典的实现
Redis字典使用哈希表作为底层实现,一个哈希表里面有多个哈希表节点,每个哈希表节点保存字典中的键值对。
table属性的是一个数组,数组中的每个元素都指向哈希节点dictEntry,每个dictEntry结构都保存一个键值对。
size记录了哈希表的大小,也就是table数组的大小。
used属性记录了哈希表目前已有的键值对数量。sizemask的值等于size-1,这个属性和哈希表一起决定键应该放在table数组的那个位置上。
type属性和privadata属性是针对不同类型的键值对,为创建多态的字典而设置。
type是指向dictType结构的指针,每个dictType包含几组针对特定类型的键值对操作的函数,Redis会为用途不同的字典设置不同的函数。
哈希算法
当要将一个新的键值对添加到字典中,程序需要先根据键值对中的键计算出哈希值和索引值,然后根据索引值,将包含新键值的哈希表放在哈希表数组的指定索引上。
键冲突
当两个或者两个以上的计算出数组索引值一致时,就发生了键冲突。
Redis的哈希表采用链表法来解决键冲突,每个哈希表的节点都有一个next指针,多个哈希表节点用next指针组成一个单链表,被分配到同一个数组索引上的多个节点使用单向链表连接起来,这就很好的解决了键冲突的问题。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。