您的位置:首页 > 数据库 > Redis

Redis初探02——Redis的String数据类型及操作

2017-03-29 16:24 549 查看
String类型是最简单的类型,一个key对应一个value,Stirng类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。

操作:

1、set

设置key对应的值为String类型的value。

例:设置一个name=zhaojw的键值对,然后在get出name的值,再次设置name=zhaojw01,再get后发现值被覆盖:

127.0.0.1:6379> set name zhaojw
OK
127.0.0.1:6379> get name
"zhaojw"
127.0.0.1:6379> set name zhaojw01
OK
127.0.0.1:6379> get name
"zhaojw01"


2、setnx

设置对应的值为String类型的value,如果key已经存在,返回0,并且不更新,nx是not exist的意思。

例:设置name=zhaojw02,发现返回0,get后发现值未变,当设置age=26时,设置成功。

127.0.0.1:6379> setnx name zhaojw02
(integer) 0
127.0.0.1:6379> get name
"zhaojw01"
127.0.0.1:6379> setnx age 26
(integer) 1
127.0.0.1:6379> get age
"26"
127.0.0.1:6379> setnx age 28
(integer) 0
127.0.0.1:6379> get age
"26"


3、setex

设置key对应的值为String类型的value,并指定此键值对应的有效期。

例:添加一个haircolor=red的键值对,并指定有效期为10秒,10秒后再去get发现返回nil代表空:

127.0.0.1:6379> setex haircolor 10 red
OK
127.0.0.1:6379> get haircolor
"red"
127.0.0.1:6379> get haircolor
(nil)
127.0.0.1:6379> setnx haircolor red
(integer) 1
127.0.0.1:6379> get haircolor
"red"


4、setrange

设置指定key的value的值的子字符串,setrange key 从第几个位置开始替换(字符串下标,从0开始) 替换内容,只替换与替换内容同等长度的内容,替换成功后返回替换后的字符串的长度。

例:将zhaojw的邮箱由163修改为126邮箱:

127.0.0.1:6379> set mail zhaojw_420@163.com
OK
127.0.0.1:6379> get mail
"zhaojw_420@163.com"
127.0.0.1:6379> setrange mail 11 126
(integer) 18
127.0.0.1:6379> get mail
"zhaojw_420@126.com"


5、mset

一次设置多个key的值,成功返回ok表示所有的值都设置成功,失败返回0表示没有任何值被设置成功。

127.0.0.1:6379> mset key1 zhaojw1 key2 zhaojw2 key3 zhaojw3
OK
127.0.0.1:6379> get key1
"zhaojw1"
127.0.0.1:6379> get key2
"zhaojw2"
127.0.0.1:6379> get key3
"zhaojw3"


6、msetnx

一次设置多个key的值,成功返回ok表示所有的值都设置成功,失败返回0表示没有任何值被设置成功,但是不会覆盖已存在的key,有一个key没有设置成功,都不会设置成功。

127.0.0.1:6379> msetnx key4 zhaojw4 key5 zhaojw5 key3 zhaojw
(integer) 0
127.0.0.1:6379> get key4
(nil)
127.0.0.1:6379> get key5
(nil)
127.0.0.1:6379> get key3
"zhaojw3"
127.0.0.1:6379> msetnx key4 zhaojw4 key5 zhaojw5 key6 zhaojw6
(integer) 1
127.0.0.1:6379> get key4
"zhaojw4"
127.0.0.1:6379> get key5
"zhaojw5"
127.0.0.1:6379> get key6
"zhaojw6"


7、get

获取key对应的String值,如果key不存在返回nil。

getset

设置key的值,并返回key的旧值:

127.0.0.1:6379> getset key6 zhaojw66
"zhaojw6"
127.0.0.1:6379> get key6
"zhaojw66"


8、getrange

获取key的value值的子字符串。 getrange key 从第几个位置开始 到第几个位置结束

127.0.0.1:6379> getrange mail 0 5
"zhaojw"
127.0.0.1:6379> getrange mail 0 10
"zhaojw_420@"


9、mget

一次获取多个key的值,如果对应的key不存在,则对应的返回nil;

127.0.0.1:6379> mget key1 key2 key3 key4 key5 key6
1) "zhaojw1"
2) "zhaojw2"
3) "zhaojw3"
4) "zhaojw4"
5) "zhaojw5"
6) "zhaojw66"
127.0.0.1:6379> mget key1 key2 key3 key4 key5 key6 key7
1) "zhaojw1"
2) "zhaojw2"
3) "zhaojw3"
4) "zhaojw4"
5) "zhaojw5"
6) "zhaojw66"
7) (nil)


10、incr

对key的值做++操作,并返回新的值,不存在的key,默认是0,然后相当于set这个key=0,后做++操作。

127.0.0.1:6379> get age
"26"
127.0.0.1:6379> incr age
(integer) 27
127.0.0.1:6379> incr age
(integer) 28
127.0.0.1:6379> incr age
(integer) 29
127.0.0.1:6379> incr age
(integer) 30
127.0.0.1:6379> get age
"30"
127.0.0.1:6379> incr agee
(integer) 1
127.0.0.1:6379> incr agee
(integer) 2
127.0.0.1:6379> get agee
"2"


11、incrby

同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0。正为加,负为减;

127.0.0.1:6379> get age
"30"
127.0.0.1:6379> incrby age 5
(integer) 35
127.0.0.1:6379> get age
"35"
127.0.0.1:6379> incrby ageee 10
(integer) 10
127.0.0.1:6379> get ageee
"10"
127.0.0.1:6379> incrby ageee -5
(integer) 5
127.0.0.1:6379> get ageee
"5"


12、decr

对key的值做–操作。同incr。相反的是正为减,负为加。

127.0.0.1:6379> get ageee
"5"
127.0.0.1:6379> decr ageee
(integer) 4
127.0.0.1:6379> decr ageee
(integer) 3
127.0.0.1:6379> decr ageee
(integer) 2
127.0.0.1:6379> get ageee
"2"


13、decrby

同incrby类似,减指定值。

127.0.0.1:6379> get ageee
"2"
127.0.0.1:6379> decrby ageee -8
(integer) 10
127.0.0.1:6379> get ageee
"10"
127.0.0.1:6379> decrby ageee 5
(integer) 5
127.0.0.1:6379> get ageee
"5"


14、append

给指定的key的字符串追加value。返回新字符串值的长度,append key value

127.0.0.1:6379> get name
"zhaojw"
127.0.0.1:6379> append name &zhanr
(integer) 12
127.0.0.1:6379> get name
"zhaojw&zhanr"


15、strlen

取指定key的value值的长度,strlen key

127.0.0.1:6379> strlen name
(integer) 12
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息