您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

SDS

Redis没有使用C语言的传统字符串,而是自己构建了一种简单动态字符串(SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。
SDS的优点
C语言传统的字符串,并不能满足Redis对字符串在安全性、效率、以及功能方面的要求。
1、常数复杂度获取字符串长度
因为C字符串并不记录自身的长度信息,所以为了获取一个C字符串的长度,程序必须遍历整个字符串,操作的时间复杂度为O(N)。
和C字符串不同,因为SDS在len属性中记录了SDS本身的长度,所以获取一个SDS长度的时间复杂度仅为O(1)。

通过使用SDS而不是C字符串,Redis将获取字符串长度所需的复杂度从O(N)降低到了O(1),这确保了获取字符串长度的工作不会成为Redis的性能瓶颈。
2、杜绝缓冲区溢出
与 C 字符串不同, SDS 的空间分配策略完全杜绝了发生缓冲区溢出的可能性:当SDS API需要对SDS进行修改时,
API 会先检查 SDS 的空间是否满足修改所需的要求, 如果不满足的话, 
API 会自动将 SDS 的空间扩展至执行修改所需的大小(当小于1M,扩展至双倍;当大于1M,扩大1M), 然后才执行实际的修改操作, 
所以使用 SDS 既不需要手动修改 SDS 的空间大小, 也不会出现前面所说的缓冲区溢出问题。

https://blog.csdn.net/weixin_42133940/article/details/88127302


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进