Redis' strings

Redis字符串基本操作命令

命令 行为
GET 获取给定建对应的值
SET 设置给定建对应的值
DEL 删除给定建对应的值
INCR 值+1
DECR 值-1
INCRBY 值+N N为整数
DECRBY 值-N N为整数
INCRBYFLOAT 值+N N为浮点数

底层实现

Redis中,字符串对象是一个基础对象,所有键值均是字符串对象。Redis自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。
SDS的结构体表示为:
struct sdshdr { int len; int free; char buf[]; };
其中len属性记录buf数组中已使用字节的数量,free则记录buf数组中未使用字节的数量,buf数组本身则存储字符中的字节。
SDS遵循C字符串以空字符结尾的惯例,保存空字符的1字节空间,不计入len属性中

SDS的优势

  • 获取字符串长度代价小,时间复杂度仅为O(1),而C字符串则为O(N)
  • 防止缓冲区溢出,可以检查内存空间容量,并自动扩容
  • 减少改变buf数组的长度时带来的内存重分配次数(预分配与惰性空间释放)
  • 二进制安全(SDS通过len属性判断字符串是否结束,而不是空字符)
  • 兼容部分C字符串API

你可能感兴趣的:(Redis' strings)