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