537
社区成员
发帖
与我相关
我的任务
分享
关于 redis 相信大家都不陌生了,之前有从 0 -1 分享过 redis 的基本使用方式,用起来倒是都没有啥问题了,不过还是那句话,会应用之后,我们必须要究其原理,知其然知其所以然
今天我们来分享一下关于 redis 的存储结构的原理
我们都知道 redis 是一个 K-V 内存数据库,类似于 memcache ,那么一般存储这种 K-V 键值对的数据结构是什么呢?
是 红黑树 , 那么我们对于红黑树的增删改查的时间复杂度是 O(logN),对于红黑树而言,只要内存足够,那么这个 N 是可以无限大的
这对于 redis 来说是没有办法满足 redis 的需求,那么我们是否可以将复杂度降低到 O(1) 呢,感兴趣的,我们可以来探索一下?

能满足 O(1) 时间复杂度的数据结构有啥呢?我们是不是可以想到 hash 表
具体 hash 表是怎样的一种结构,前面有文章已经分享过一些,redis 基础性的数据结构可以查看历史文章:【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步
redis 支持的 key 有:
实际上最终到 redis 处理的时候,上述类型,都是对应按照 sring 类型进行存储的
这个 key 是有规律的 key,并且是强随机性的
我们知道 O(1) 的索引时间复杂度,数组就是一个很好的例子,我们访问数组元素的时候,直接通过下标访问即可
那么对应 hash 表,其实就是 数组 + hash 函数 来进行处理的,数组的下标索引就是 hash 函数 对 key(字符串) 进行 hash 算法计算出来的一个整数
例如这样

搭建查看原文
更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774