美文网首页
Redis中的字典

Redis中的字典

作者: jiangling500 | 来源:发表于2019-05-07 22:38 被阅读0次

Redis中的字典

  • Redis中的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表结点,而每个哈希表结点保存了字典中的一个键值对。
  • 相当于C++中的unordered_map
  • 相当于Java中的HashMap

哈希表的负载因子

负载因子 = 哈希表已保存节点数量 / 哈希表大小

使用位操作(&运算)代替求余操作

位运算比较高效,当size为2的n次方时,下面两个公式是等价的:

  • hash % size
  • hash & (size - 1)
    在Redis中使用位与运算计算键的索引值:
hash = dict->type->hashFunction(k0); // 计算键k0的哈希值
index = hash & dict->ht[0].sizemask; // 计算键k0的索引值,其中,sizemask等于size-1,size即为哈希表容量

在JDK7中也是使用位与运算计算键的索引值:

static int indexFor(int h, int length) {
  return h & (length - 1); // 相当于h % length
}

参考

  • 《redis设计与实现(第二版)》

相关文章

  • Redis 设计与实现 4:字典 dict

    Redis 中,字典是基础结构。Redis 数据库数据、过期时间、哈希类型都是把字典作为底层结构。 字典的结构 哈...

  • Redis中的字典

    Redis中的字典 Redis中的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表结点,而每个哈希表结点保...

  • 工作中遇到的hashtable

    一.redis 中使用的字典 redis的字典是由hash表实现的,代码主要是在dict.cpp/dict.h中 ...

  • Redis深度历险-基数树

    Redis深度历险-基数树 Redis中的基数树是一种有序字典树,zset也是一种有序字典但是是按照score进行...

  • Redis是如何判断数据是否过期的呢?

    Redis 通过一个叫做过期字典(可以看作是hash表)来保存数据过期的时间。过期字典的键指向Redis数据库中的...

  • Redis的渐进式hash

    redis的底层存储`` redis把所有的key都存储在一个大字典中,学过python的小伙伴应该就会知道字典这...

  • Redis数据结构--字典

    字典是Redis的重要数据结构,Redis的数据库就是使用字典作为底层实现的。代码位于dict.h和dict.c中...

  • Redis中字典的实现

    一、概念 字典, 又称符号表(symbol table)、关联数组(associative array)或者映射(...

  • 4.字典

    字典在Redis中的应用相当广泛,比如Redis的数据库就是使用字典来作为底层实现的,对数据库的增、删、查、改操作...

  • Redis--字典

    字典的应用范围 1.redis的DB就是一个字典 2.redis的hash键,当包含的键值较多,又或者键值对中的元...

网友评论

      本文标题:Redis中的字典

      本文链接:https://www.haomeiwen.com/subject/gxvuoqtx.html