Redis数据类型及操作

2014-11-24 18:55:42 · 作者: · 浏览: 5

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的长度