redis的String类型以及其操作

Redis的数据类型

String类型以及操作

String是最简单的数据类型,一个key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化对象

Set
设置key对应的值为string类型的value
例如:我们添加一个name为lijie的键值对

127.0.0.1:6379> set name lijie
OK
127.0.0.1:6379> get name
"lijie"
127.0.0.1:6379> set name lambrother
OK
127.0.0.1:6379> get name
"lambrother"

我们再次设置name为lambrother,后面发现将前面的lijie覆盖了。


Setnx
设置key对应的值为string类型的value,如果key已经存在,返回0,nx是not exist的意思
例如我们添加一个name = lijie_new的键值对

127.0.0.1:6379> setnx name lijie_new
(integer) 0
127.0.0.1:6379> get name
"lambrother"
127.0.0.1:6379> setnx age 20
(integer) 1
127.0.0.1:6379> get age 
"20"



Setex
设置key对应的值为string类型的value,并指定键值对的有效期
例如:我们添加一个haircolor = red的键值对,并制定有效期为10秒

127.0.0.1:6379> setex haircolor 10 red 
OK
127.0.0.1:6379> get haircolor
"red"
10秒后
127.0.0.1:6379> get haircolor
(nil) nil指的是空的意思。
127.0.0.1:6379> setnx haircolor red
(integer) 1 //验证了前面的键值对失效了。



Setrange
设置指定key的value值的子字符串
例如:我们希望将lijie的126邮箱替换成为gmail邮箱

127.0.0.1:6379> set email lijie@lambrother.net
OK
127.0.0.1:6379> get email
"lijie@lambrother.net"
127.0.0.1:6379> setrange email 6 li-jie.me //6代表的是原来字符串的开始替换位置的下标
(integer) 20 //20 代表的是新字符串的长度
127.0.0.1:6379> get email
"lijie@li-jie.mer.net" //观察发现替换后的字符串如果长度没有原来字符串长,会将原来字符串的剩余依旧拼接



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

127.0.0.1:6379> mset key1 lijie1 key2 lijie2
OK
127.0.0.1:6379> get key1
"lijie1"
127.0.0.1:6379> get key2
"lijie2"



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

127.0.0.1:6379> msetnx key3 lambrother key4 lijie@lambrother.net key2 lijie
(integer) 0
127.0.0.1:6379> get key3
(nil)
127.0.0.1:6379> get key4
(nil)
127.0.0.1:6379> msetnx key3 lambrother key4 lijie@lambrother.net key5 lijie
(integer) 1
127.0.0.1:6379> get key3
"lambrother"
127.0.0.1:6379> get key4
"lijie@lambrother.net"
127.0.0.1:6379> get key5
"lijie"
127.0.0.1:6379>




getset
设置key的值并返回旧的key值

127.0.0.1:6379> get key5
"lijie"
127.0.0.1:6379> getset key5 haha
"lijie"
127.0.0.1:6379> get key5
"haha"
127.0.0.1:6379>



getrange
获取子字符串

127.0.0.1:6379> get email
"lijie@li-jie.mer.net"
127.0.0.1:6379> getrange email 0 5 //获取email的value的0索引到5(包括5)索引的值
"lijie@"
127.0.0.1:6379>


mget
批量获取

127.0.0.1:6379> mget key1 key2 key3 key4 key5 key 6
1) "lijie1"
2) "lijie2"
3) "lambrother"
4) "lijie@lambrother.net"
5) "haha"
6) (nil)
7) (nil)
127.0.0.1:6379>



incr
对key的值做加加操作,并返回新的值

127.0.0.1:6379> set key6 30
OK
127.0.0.1:6379> get key6
"30"
127.0.0.1:6379> incr key6
(integer) 31
127.0.0.1:6379> incr key6
(integer) 32
127.0.0.1:6379> get key6
"32"
127.0.0.1:6379>


incrby
同incr类似,区别在于必须指定增量

127.0.0.1:6379> get key6
"37"
127.0.0.1:6379> incrby key6 5
(integer) 42
127.0.0.1:6379> incrby key6 -8
(integer) 34
127.0.0.1:6379>


decr
对key的值做减减操作

127.0.0.1:6379> decr key6
(integer) 33
127.0.0.1:6379> decr key6
(integer) 32



decrby
与decr类似,指定减量

127.0.0.1:6379> decrby key6 8
(integer) 24
127.0.0.1:6379> decrby key6 -7
(integer) 31


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

127.0.0.1:6379> get name
"lambrother"
127.0.0.1:6379> append name .net
(integer) 14
127.0.0.1:6379> get name
"lambrother.net"



strlen
取指定key的value的长度

127.0.0.1:6379> strlen name
(integer) 14
原文地址:https://www.cnblogs.com/aigeileshei/p/6566738.html