当前位置:   article > 正文

Redis中简单动态字符串SDS详解_sds字符串

sds字符串

什么是简单动态字符串?


Redis没有直接使用C语言的字符串,而是自己封装了一种字符串,叫SDS(简单动态字符串)

哪些地方使用到了SDS?
        在存储数据中,redis中键值对中键或值可以SDS,如果值是一个链表,链表中包含多个SDS,SDS类型于里面的最基本数据类型

除了存储数据,还有哪些地方使用到了SDS?
SDS还被用作缓冲区:AOF时作为AOF的缓冲区,以及客户端输入缓冲区

为什么要使用SDS,而不使用C字符串?


SDS的C源码结构是什么样的?SDS是如何实现的?
3.2之前的版本:

  1.     sturct sdshdr{
  2.         unsigned int len;//已使用的字符串长度
  3.         unsigned int free;//未使用的字符串长度
  4.         char buf[];//字符串数组的引用
  5.     }

3.2之后的版本:根据字符串的长度,有5种结构体


     


C字符串与SDS有哪些区别?

 

 
C语言中分配N+1个字符串的空间,能存储N个字符串,空字符结尾
C语言获取一个字符串的长度,需要遍历一个字符串,时间复杂度O(n)
在SDS中直接访问len属性,就可以得到SDS的长度,时间复杂度为O(1)
SDS在获取字符串长度时,不会有多的性能损耗,比如命令strlen可

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/402028?site
推荐阅读
相关标签
  

闽ICP备14008679号