【32期】你知道Redis的字符串是怎么实现的吗?
阅读本文大概需要 4 分钟。
来自:juejin.im/post/5ca9d8ae6fb9a05e5c05c4e8
本人 :常用有5种,string,list,set,zset,hash(内心很得意)
本人 :用的最多的是string,通常会把json字符串存进去
本人 :呃~,我了解Redis是用C语言写的,至于具体实现就不清楚了~
Redis字符串的实现
Redis字符串的性能优势
Redis字符串的实现
1.SDS 代码结构
struct sdshdr{
// 记录已使用长度
int len;
// 记录空闲未使用的长度
int free;
// 字符数组
char[] buf;
};
2.SDS 动态扩展特点
计算出大小是否足够
开辟空间至满足所需大小
开辟与已使用大小len相同长度的空闲free空间(如果len < 1M)开辟1M长度的空闲free空间(如果len >= 1M)
Redis字符串的性能优势
快速获取字符串长度
避免缓冲区溢出
降低空间分配次数提升内存使用效率
1.快速获取字符串长度
struct sdshdr{
// 记录已使用长度
int len;
// 记录空闲未使用的长度
int free;
// 字符数组
char[] buf;
};
2.避免缓冲区溢出
计算出大小是否足够
开辟空间至满足所需大小
3.降低空间分配次数提升内存使用效率
空间与分配
惰性空间回收
推荐阅读:
【31期】了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?应对措施是什么
微信扫描二维码,关注我的公众号
朕已阅
评论