(Redis教程)简单动态字符串 SDS

简单动态字符串 SDS

在这里插入图片描述
在这里插入图片描述
除了用来保存数据库中的字符串值之外,SDS还被用作缓冲区。

  • AOF缓冲模块中的AOF缓冲区,是由SDS实现的。
  • 客户端状态中的输入缓冲区,是由SDS实现的。

SDS的定义

每个sds.h/sdshdr结构表示一个SDS值:
在这里插入图片描述
在这里插入图片描述

  • free属性的值为0,表示这个SDS没有分配任何未使用空间。
  • len属性的值为5,表示这个SDS保存了一个五字节长的字符串。
  • buf属性是一个char类型的数组
    在这里插入图片描述
    在这里插入图片描述

SDS与C字符串的区别

在这里插入图片描述

  1. 常数复杂度获取字符串长度
  • 对于C字符串,因为不记录自身的长度信息,必须遍历整个字符串
  • 对于SDS,因为SDS在len属性中记录SDS本身的长度,所以获取长度的复杂度为O(1)
  1. 杜绝缓冲区溢出

  2. 减少修改字符串时带来的内存重分配次数

  3. 二进制安全

  4. 兼容部分C字符串函数

展开阅读全文
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值