文章目录
- 1. 引言
- 2. redis 源码下载
- 3. 字符串数据结构
- 4. 参考
1. 引言
前情提要:
《redis 从0到1完整学习 (一):安装&初识 redis》
《redis 从0到1完整学习 (二):redis 常用命令》
《redis 从0到1完整学习 (三):redis 数据结构》
本文主要结合源码来介绍 Redis 字符串类型的数据结构
2. redis 源码下载
Redis 源码可以点击这里下载,方便查看其中定义的一些数据结构。
3. 字符串数据结构
Redis 构建了一种新的字符串结构,称为简单动态字符串(Simple Dynamic String),简称SDS。
如果了解过 golang 的切片,可以发现两者底层的结构体还是比较类似的。底层是用字符数组存储的,
len
表示字符数组真实的长度(不包含\0)alloc
表示已经分配的大小(不包含\0),len <= alloc
flags
用来控制 SDS 的 Header 大小
例如,一个包含 age
的 SDS:
SDS 具备动态扩容的能力:
- 如果新字符串小于1M,则新空间为扩展后字符串长度的两倍+1;
- 如果新字符串大于1M,则新空间为扩展后字符串长度+1M+1。
例如一个内容为“age”的 SDS,增加 “name” 字符,那么扩容后分配的长度:(3+4)*2+1 = 15,即alloc=15
,但是len=7
4. 参考
《redis 从0到1完整学习 (一):安装&初识 redis》
《redis 从0到1完整学习 (二):redis 常用命令》
《redis 从0到1完整学习 (三):redis 数据结构》