Redis字符串的底层设计

客官,留下你的赞;成为我的粉丝,一起上车哦!评论区欢迎你的留言

Redis的底层是用C语言来实现的,在C语言中字符串的默认是以'\0'标识结束,而Redis并没有采用这种传统的方法表示,而是自己构建了一种简单动态字符串(SDS)来表示。

下面看一下什么是SDSSDS的代码定义,以及在存储一个字符串"Redis"时 SDS和传统C的表示分别是怎么样使用SDS的好处是什么

SDS是什么

SDS(simple dynamic string) -简单动态字符串,可以根据字符串的大小,动态分配空间。

SDS的定义

在这里插入图片描述

C和SDS表示字符串
  1. 存储字符串"Redis"时,传统C的表示
    在这里插入图片描述
  2. 存储字符串"Redis"时,SDS的表示
    在这里插入图片描述
  3. 使用SDS的好处
    (1) 通过SDS获取字符串的长度时,时间复杂度为O(1),因为SDS已经定义了存储的字符串的长度(len);如果通过传统的C的表示来获取字符串的长度,时间复杂度为O(n),其中n是字符串的长度。
    (2) 避免了溢出
    (3)避免了内存重新分配
    (4)支持存储二进制数据

下一章节,会详细的通过实例来分析使用SDS的好处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值