redis 从0到1完整学习 (四):字符串 SDS 数据结构
2023-12-21 18:07:01
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 数据结构》
文章来源:https://blog.csdn.net/qq_36803941/article/details/135131121
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!