数据库
首页 > 数据库> > Redis之字符串

Redis之字符串

作者:互联网

SDS

Redis底层并没有使用C语言的传统字符串(以空字符结尾的字符数组),而是自定义了一种简单的动态字符串类型(SDS)

在Redis里,C字符串只会作为字符串字面量用在一些无需对字符串值进行修改的地方,比如打印日志。其余地方使用的都是SDS

比如

set msg "hello world"

Redis将在数据库中创建一个键值对

SDS结构

struct sdshdr{
  //记录buf数组中已使用的字节的数量 ,不包含'\0'
  int len;
  //记录buf数组中未使用的字节的数量
  int free;
  //字节数组,用于保存字符串
  char buf[];
}

SDS遵循C字符串以空字符结尾的惯例,保存空字符'\0'的1字节空间不计算在len长度中,并且添加空字符到末尾的操作都是由SDS函数自动完成的,这个空字符对用户来说是完全透明的,可以当不存在。

为什么要以空字符结尾?

主要是为了复用c语言中关于字符串的一些函数。

SDS的优势

标签:SDS,Redis,len,空间,空字符,字符串
来源: https://www.cnblogs.com/wangstudyblog/p/15350441.html