首页 > 数据库    日期:2026-07-11 / 浏览

前言

Redis可以简单理解为是一个存储键值对的内存结构

下面我们来看一下Redis使用什么数据结构来存储键值对的叭

Redis键值对的存储原理

Redis存储键值对的数据结构是哈希表

存储键值对的运行机制

因为Redis的数据存储类型是多种多样的,所以管理键值对的哈希表只是存储这个数据的地址

我下面解释运行存储键值对运行机制的时候的术语解释

  • 存储地址: 哈希表存储的 数据地址 位置
  • 数据地址: 数据本身的 地址 位置

使用哈希表寻找键值对

1、使用key通过哈希函数计算出哈希表中的存储地址

2、通过存储地址找到哈希表中存放的数据地址

3、通过数据地址找到数据并进行读取

使用哈希表存储键值对

1、使用key通过哈希函数计算出哈希表中的存储地址

2、通过存储地址找到数据应该存放的位置,把数据地址存放在里面

使用哈希表存储键值对弊端

当存储数据过多的时候,此时出现哈希冲突,会在每一个哈希桶中形成冲突链表,从而出现寻找存储地址效率变慢

对弊端的优化

redis同时维护数组相同的两个哈希表

当冲突链表过多的时候,会进行数据迁移

把备用的哈希表数组长度增大到满足当前数据规模的大小

把数据迁移到新的满足当前数据规格大小的哈希表中

一次性迁移会对redis造成短时间的阻塞,影响业务,所以采用渐进式的迁移哈希表

渐进式迁移哈希表

下面说的哈希表的桶可以理解为冲突链表

每次有请求发生过来的时候,在处理请求的同时顺带对这个旧哈希表进行从左到右的桶迁移

每次请求迁移一个桶

迁移期间查询数据两个哈希表都进行查询,存储数据存储到新的哈希表中

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章