深入理解 redis 底层

主要用于 redis 的底层原理、源码实现的个人学习记录,配图主要来自极客时间。

引言

首先,redis 主要是为了实现高性能、高可靠、高可扩展性三个高度。

而全面学习 redis,主要是当redis 出现相应的故障问题时,开发人员能进行快速对问题进行定位与解决。

而对于问题的定位排查需要的流程,我见过画的最好的图还是极客时间的蒋老师的问题排查图。

Redis 底层数据结构

redis 底层数据结构主要采用整数数组和压缩列表,但是在查找时间复杂度方面并没有很大的优势,那为什么 Redis 还会把它们作为底层数据结构呢?

这有两个方面的原因:

1、从内存利用率出发,数组和压缩列表都是非常紧凑的数据结构,它比链表占用的内存要更少。Redis是内存数据库,大量数据存到内存中,此时需要做尽可能的优化,提高内存的利用率。

2、从CPU高速缓存出发,在Redis在设计时,集合数据元素较少情况下,默认采用内存紧凑排列的方式存储,同时利用CPU高速缓存不会降低访问速度。当数据元素超过设定阈值后,避免查询时间复杂度太高,转为哈希和跳表数据结构存储,保证查询效率。


深入理解 redis 底层
https://chaggle.github.io/2022/06/13/middleware/redis2/
作者
chaggle
发布于
2022年6月13日
许可协议