Redis中String类型的相关命令操作
String
append
如果key已存在,则直接在value追加值,如果key不存在,则会插件一个新的value为空的key,然后在追加
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> append name " hello"
(integer) 10
127.0.0.1:6379> get name
"lisi hello"
返回的是最末尾字符串的位置
decr
可以实现对value进行-1
操作
127.0.0.1:6379> get age
"15"
127.0.0.1:6379> decr age
(integer) 14
127.0.0.1:6379> get age
"14"
返回的值是-1之后的值也就是该key目前值,注意对非整数字符串操作会报错
decrby
和decr
一样,只不过可以自定义步长
127.0.0.1:6379> decrby age 5
(integer) 9
127.0.0.1:6379>
注意:自减操作是可以一直减下去
get
获取对应的key,不存在则返回nil
getrange
返回key对应的value的字串(字符串中的连续某一段),字串有start和end决定范围,从左往右,从0开始
127.0.0.1:6379> get hello
"hello redis"
127.0.0.1:6379> getrange hello 0 4
"hello"
字符串的结果输出始终是从左往右
getrange key start end
.注意:如果下标是负数,则位置从右往左,start和end都如此
始终记得,start是开始,start的位置就已经决定字串的最终可能性范围,start决定了子串开始的位置,
那么.end的结束位置必须在start的右边才有值,不管是从左往右还是从右往左
getset
为指定的key设置值并返回修改之前的值
127.0.0.1:6379> getset name zhangsan
"lisi hello"
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379>
incr
+1
127.0.0.1:6379> get age
"4"
127.0.0.1:6379> incr age
(integer) 5
和decr注意是一样值要是整数
incrby
如上,自加自定义步长
incrbyfloat
增长浮点数
必须给定增长的点数
127.0.0.1:6379> set key2 3.3
OK
127.0.0.1:6379> incrbyfloat key2 0.3
"3.6"
127.0.0.1:6379>
注意,在定义一个key的时候,如果给的值精确到小数点后两位,么在增长的时候它的精度会自动增加
如下:
127.0.0.1:6379> get key1
"45.36"
127.0.0.1:6379> incrbyfloat key1 0.5
"45.859999999999999"
mget和mset
就是get和set的批量操作
- MGET的语法格式:
MGET key1 key2 key3
- MSET的语法格式:
MSET key1 value1 key2 value2 ... ...
127.0.0.1:6379> mget name age
1) "zhangsan"
2) "5"
127.0.0.1:6379> mset name jack age 20
OK
127.0.0.1:6379> mget name age
1) "jack"
2) "20"
127.0.0.1:6379>
setex
给指定的key设置值并设置过期时间,单位为秒
127.0.0.1:6379> get name
"jack"
127.0.0.1:6379> setex name 30 aron
OK
psetex
同上,单位为毫秒
setnx
setnx是set if not exists
,如果key已存在,不做操作,只有在key不存在则创建新的key
127.0.0.1:6379> setnx name jack
(integer) 1
127.0.0.1:6379> setnx name aron
(integer) 0
127.0.0.1:6379> get name
"jack"
127.0.0.1:6379>
msetnx
批量操作,注意是类似事务的操作
如下:因为name
已经存在,导致key5也无法创建
127.0.0.1:6379> msetnx name aron key5 23
(integer) 0
127.0.0.1:6379> get key5
(nil)
127.0.0.1:6379>
setrange
和getrange
类似,相当于在字符串的一个范围内替换值,
setrange key index value
index:开始的下标位置,直到value的长度结束位置
127.0.0.1:6379> get text
"hello world"
127.0.0.1:6379> setrange text 6 redis
(integer) 11
127.0.0.1:6379> get text
"hello redis"
127.0.0.1:6379> setrange text 6 xx
(integer) 11
127.0.0.1:6379> get text
"hello xxdis"
127.0.0.1:6379>
strlen
计算key的value的长度