Redis 学习总结 一【索引】

Redis作为一个key-value存储数据库,索引必定是它最底层的支撑。学MySQL我们会想到B+树索引,学ES我们会想到倒排索引,学Redis我们一样会想到Hash索引。

索引简单来讲就是查询数据的优化方案,通过提取数据的特征信息,通过特征信息快速定位原始数据。按照这个思路,我们来举一反十,看看那些类似设计方案:

  1. 数组,通过下标计算元素的具体地址,然后通过地址获取数据,通过下标计算真实地址其实也算是一种索引技术。
  2. MySQL的B+树索引,通过索引减少查询磁盘的次数,提高查询效率,这是索引的经典场景。
  3. ES的倒排索引
  4. Java中的Map其实也是索引技术的经典实现
  5. 总结索引作为最底层的系统思想必须要深刻理解,除了索引还有数组和链表。

Redis的Hash算法

Redis的Hash碰撞率

Redis的Hash冲突解决方案

Redis的槽位设计

Redis的key设计

  • 长度足够短,减少存储空间
  • 避免长key,redis的key是字符串,key太长字符串的存储格式会变化,空间占用会变高
  • key分散性要好,所有数据库索引的共同特性
  • key最好由多级别业务key组成,区分业务避免混乱

        MurmurHash算法由Austin Appleby发明于2008年,是一种非加密hash算法,适用于基于hash查找的场景。murmurhash最新版本是MurMurHash3,支持32位,64位及128位值的产生。

        MurmurHash标准使用C++实现,但是也有其他主流语言的支持版本,包括:perl、C#、ruby、python、java等。这种算法即使输入的键是有规律的,算法仍能给出一个很好的随机分布性,计算速度非常快,使用简单。因此在多个开源项目中得到应用,包括libstdc、libmemcached、nginx、hadoop等。

  Redis使用的是MurmurHash2。当字典被用作数据库的底层实现,或者哈希键的底层实现时,使用MurmurHash2算法来计算键的哈希值

【原创】为什么Redis集群有16384个槽 - 孤独烟 - 博客园

https://github.com/redis/redis/issues/2576

Murmur哈希_百度百科

Redis使用的是哈希索引,而不是倒排索引。哈希索引是一种将键和值的映射关系存储在哈希表中的索引结构。每个键都被映射到一个固定的哈希槽,而在哈希槽中存储了指向对应值的指针。这种索引结构使得Redis可以快速地根据键来查找对应的值。 倒排索引是一种将关键词和对应文档的映射关系存储在索引表中的索引结构。它可以用于快速地根据关键词来查找包含该关键词的文档。倒排索引在搜索引擎中被广泛使用,但在Redis中并不使用倒排索引。 因此,Redis并不直接支持倒排索引。但是,你可以使用Redis的其他数据结构,如有序集合(sorted set)或集合(set),来实现类似倒排索引的功能。例如,你可以将关键词作为有序集合的成员,而将包含该关键词的文档的标识符作为有序集合的分值。这样,你就可以通过有序集合的成员操作来查找包含指定关键词的文档。 总之,虽然Redis本身不直接支持倒排索引,但你可以利用Redis提供的其他数据结构来实现类似的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis 学习总结 一【索引】](https://blog.csdn.net/cqupt2012214390/article/details/121088250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [redis+结巴分词做倒排索引](https://blog.csdn.net/qq_35362055/article/details/88561574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值