一、string 类型及操作
string是最简单的类型,你可以理解成与 Memcached是一模一样的类型,一个 key 对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。 string类型是二进制安全的。意思是 redis的 string可以包含任何数据,比如 jpg图片或者序列化的对象。
1.1 set
设置key 对应的值为 string类型的value。
127.0.0.1:6379> set my wxang
OK
127.0.0.1:6379> get my
"wxang"
设置key 对应的值为 string类型的value。 如果 key 已经存在,返回 0, nx是 not exist的意思。
127.0.0.1:6379> get my
"wxang"
127.0.0.1:6379> setnx my wxang_new
(integer) 0
127.0.0.1:6379> get my
"wxang"
1.3 setex
设置key 对应的值为 string类型的value,并指定此键值对应的有效期。
例如我们添加一个 phoneColor= red的键值对,并指定它的有效期是 10秒,可以这样做:
127.0.0.1:6379> setex phoneColor 10 red
OK
127.0.0.1:6379> get phoneColor
"red"
127.0.0.1:6379> get phoneColor
(nil)
可见由于最后一次的调用是 10秒以后了,所以取不到 haicolor 这个键对应的值。
1.4 setrange
设置指定key 的value 值的子字符串。
例如我们希望将 wx5040257的qq邮箱替换为126.com邮箱,那么我们可以这样做:
127.0.0.1:6379> set email wx5040257@qq.com
OK
127.0.0.1:6379> setrange email 10 126.com
(integer) 17
127.0.0.1:6379> get email
"wx5040257@126.com"
其中的10是指从下标为10(不包含10)的字符开始替换
1.5 mset
一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值
被设置。
127.0.0.1:6379> mset name1 heixx name2 zhouxx name3 daxx
OK
127.0.0.1:6379> get name1
"heixx"
127.0.0.1:6379> get name2
"zhouxx"
127.0.0.1:6379> get name3
"daxx"
1.6 msetnx
一次设置多个 key 的值。如果存在就不设置,不存在就设置。
127.0.0.1:6379> msetnx name1 mazi name4 zhouyufa
(integer) 0
127.0.0.1:6379> get name1
"heixx"
127.0.0.1:6379> get name4
(nil)
可以看出,如果返回0,表示有存在到值,那么整体设置不成功,所有操作都会被会滚,不会执行。
1.7 getset
设置key 的值,并返回 key 的旧值。
127.0.0.1:6379> get name1
"heixx"
127.0.0.1:6379> getset name1 huawei_new
"heixx"
127.0.0.1:6379> get name1
"huawei_new"
字符串截取
127.0.0.1:6379> get name1
"huawei_new"
127.0.0.1:6379> get email
"wx5040257@126.com"
127.0.0.1:6379> getrange email 0 8
"wx5040257"
127.0.0.1:6379> getrange email 9 100
"@126.com"
下标上从0开始,当下标超出字符串长度时,将默认为是同方向的最大下标 。
1.9 mget
一次获取多个key 的值,如果对应key 不存在,则对应返回 nil。
具体样例如下:
127.0.0.1:6379> mget name1 name2 name4
1) "huawei_new"
2) "zhouxx"
3) (nil)
name4由于没有这个键定义,所以返回 nil。
1.20 incr
对 key 的值做加加操作,并返回新的值。注意 incr 一个不是 int 的 value 会返回错误,incr 一
个不存在的key,则设置 key 为1
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> incr age
(integer) 21
127.0.0.1:6379> get age
"21"
127.0.0.1:6379>
1.21 incrby
同incr类似,加指定值 ,key 不存在时候会设置 key,并认为原来的 value 是 0
127.0.0.1:6379> get age
"21"
127.0.0.1:6379> incrby age 5
(integer) 26
127.0.0.1:6379> get name
"HongWan@gmail.com"
127.0.0.1:6379> get age
"26"
127.0.0.1:6379>
1.22 decr
对key的值做的是减减操作,decr一个不存在 key,则设置key为-1
127.0.0.1:6379> get age
"26"
127.0.0.1:6379> decr age
(integer) 25
127.0.0.1:6379> get age
"25"
127.0.0.1:6379>
1.23 decrby
同decr,减指定值。
127.0.0.1:6379> get age
"25"
127.0.0.1:6379> decrby age 5
(integer) 20
127.0.0.1:6379> get age
"20"
127.0.0.1:6379>
给指定key的字符串值追加 value,返回新字符串值的长度。
例如我们向name的值追加一个@126.com 字符串,那么可以这样做:
127.0.0.1:6379> get name1
"huawei_new"
127.0.0.1:6379> append name1 @126.com
(integer) 18
127.0.0.1:6379> get name1
"huawei_new@126.com"
1.25 strlen
取指定key的value值的长度。
127.0.0.1:6379> strlen name1
(integer) 18
127.0.0.1:6379> set score 66
OK
127.0.0.1:6379> strlen score
(integer) 2