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