Redis数据类型及操作,redis 的 string 可以包含任何数据,比如 jpg 图片或者序列化的对象。从内部实现来看其实 string 可以看作 b
strings 类型
string 类型是二进制安全的。
redis 的 string 可以包含任何数据,比如 jpg 图片或者序列化的对象。从内部实现来看其实 string 可以看作 byte 数组,最大上限是 1G 字节
struct sdshdr {
long len;//buf的长度
long free;//buf剩余可用字节数
char buf[];//实际的字符串内容
};
1:set
设置 key 对应的value(string类型)
> set name larry
ok
2:setnx
即set not exist,如果 key 已经存在,返回 0
> set name larry
ok
>setnx name larry
(integer) 0
3:setex
存储键值对,并设置有效期
>setex name 10 larry
ok
>get name
"larry"
10秒钟后...
>get name
(nil)
4:setrange
有就替换,没有就用\x00代替缺少的字符来替换,数字代表开始替换的下标
> get name
"larry"
>setrange name 0 lv
(integer) 5
>get name
"lvrry"
>setrange name 10 lv
"lvrry\x00\x00\x00\x00\x00lv"
5:mset
每次设置多个key值
>mset key1 value1 key2 value2
ok
6:msetnx
一次设置多个 key 的值,具有原子性,同时成功或失败,失败返回0,所有操作回滚
7:get
根据key获取值,不存在返回(nil)
>get asdasds
(nil)
8:getset
获取旧值并设置一个新值,不存在返回(nil)
>get name
"larry"
>getset name lv
"larry"
>get name
"lv"
>getset dsadasd lv
(nil)
9:getrange
根据指定的下标获取值,负数表示从右边开始
>getrange 0 1 name
"la"
10:mget
返回多个值,,不存在返回(nil)
>get name sdadasd
1)"larry"
2)(nil)
11:incr
加加操作,如果字符不是int型会报错(error) ERR value is not an integer or out of range
> set age 20
OK
incr age
(integer) 21
12:incrby
加操作
> get age
"21"
> incrby age 5
(integer) 26
13:decr
减减操作
14:decrby
减操作
15:append
追加操作,返回字符串长度
>append name lv
(integer) 15
>get name
"larrylv"
16:strlen
返回value的长度