Redis数据类型--string
Redis数据类型--string
五种数据类型:string, list, set, zset, hash
1). string类型
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象(PHP中对象序列化函数serialize)
内部实现,其本质是一个byte数组,字符串的大小被限制在512M以内
www.zzzyk.com
[plain]
struct sdshdr {
long len; //buf数组的长度
long free; //buf数组中剩余可用字节数
char buf[]; //存储实际字符串内容
}
操作方法:
a.set方法:
格式:set key value
设置key对应的值为string类型的value,OK=成功,0=失败, 若是该key已经存在,则覆盖其原有值。
[plain]
>set pwd 123456 //即添加一个pwd=123456的k-v
OK
b.get方法:
格式:get key
获取key对应的string值,如果key不存在返回nil
[plain]
>get pwd //即获取pwd对应的值
"123456"
>get name
(nil)
c.setnx方法:
格式:setnx key value
与set相同,不同的是:设置之前要检测key是否已经存在,如果key已经存在,则返回0,(nx = notexist)
www.zzzyk.com
[plain]
>setnx user zhangsan
(integer) 1
>setnx user lisi
(integer) 0
>get user
"zhangsan"
>set user chuangrain
OK
>get user
"chuangrain"
d. setex方法:
格式:setex key seconds value
设置key对应的值为string类型的value,并指定对此键值对应的有效期seconds
[plain]
>setex tea 10 food //即设置tea=food,指定10秒钟有效时间
OK
>get tea
"food"
>get tea //10s后
(nil)
e.setrange方法:
格式:setrange key offset value
www.zzzyk.com
用value参数调换指定key对应的字符串值 ,从偏移量offset开始,不存在的key当作空白字符串处理,如果offset大于key对应的字符串长度,那么原字符串和偏移量之间的空白将用零比特(zerobytes, "\x00")来填充,返回被setrange修改后的字符串长度。
[plain]
>set hw "hello word"
OK
>setrange hw 6 "Redis"
(integer)11
>get hw
"helloRedis"
>setrange hello 2 "chuang" //hello不存在
(integer) 12
>get hello
"\x00\x00chuangrain"
>setrange hello 15 rd
(integer) 17
>get hello
"\x00\x00chuangrain\x00\x00\x00rd"
f.mset方法
格式:mset key1 value1 key2 value2 …
一次设置多个key的值,成功返回OK,即全部设置成功,失败返回0,即没有任何设置,此操作具有原子性
g.msetnx方法:
格式:msetnx key1 value1 key2 value2 …
与mset类似,不同的是要检查设置的key是否已经存在,若存在返回0
h.getset方法:
格式:getset key value
设置key对应string类型的value,并返回key的旧值,如果key不存在,先设置key=value,再返回nil
www.zzzyk.com
[plain]
>get site
"taobao"
>getset site baidu
"taobao"
>get site
"baidu"
i.getrange方法:
格式:getrange key start end
获取key对应value的子字符串,从start开始到end结束,如果end(为正)小于 start(为正),或者key不存在,则返回空字符串"",如果end超出value的长度,则返 回start到value末尾之间的字符串,start和end可以为负,字符串左边的下标从0开始,右边的下标从-1开始。
0
1
2
3
4
b
a
i
d
u
-5
-4
-3
-2
-1
以"baidu"为例,即每个字符可能通过正、负来访问
[plain]
>get site
"baidu"
>getrange site 1 2
"ai"
>getrange site 3 -1
"du"
>getrange www 3 4 //www不存在
""
j.mget方法
格式:mget key1 key2 …
一次获取多个key对应的value值,如果对应的key不存在,则对应返回nil
www.zzzyk.com
[plain]
>mset user1 taobao user2 baidu
OK
>mget user1 user2 user3 //user3不存在
1) "taobao"
2) "baidu"
3) (nil)
k.incr方法:
格式:incr key
将指定key对应的value原子性的递增1,返回递增后的value值。如果key不存在,设其初始值为0,再递增1。如果value
上一个:数据库手动设置数据约束
下一个:截取日期参数中的月和日