set和get
set:向库中添加string键值对
多次添加相同key的记录时,会覆盖原来键对应的值
get:取出key对应的值
如果key对应的值不存在,返回nil
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # 添加两条记录 127.0.0.1:6379> set k1 v1 OK 127.0.0.1:6379> set k2 v2 OK # 查看当前库中所有的key 127.0.0.1:6379> keys * 1) "k2" 2) "k1" # 查看k1对应的值 127.0.0.1:6379> get k1 "v1" # 添加键为k1的一条记录 127.0.0.1:6379> set k1 value1 OK # 查看k1对应的值 127.0.0.1:6379> get k1 "value1" # 获取k3对应的值 127.0.0.1:6379> get k3 (nil)
|
setnx
向库中添加string键值对,只有key不存在时才能设置,key已经存在时就不能设置,注意和set的区别
设置不成功时返回0
1 2 3 4
| 127.0.0.1:6379> setnx k1 8 (integer) 0 127.0.0.1:6379> setnx k3 v3 (integer) 1
|
append
追加内容到key对应的值上
返回值为追加后的字符串长度
1 2 3 4 5 6 7 8 9
| # 获取k1对应的值 127.0.0.1:6379> get k1 "value1" # 追加abc到k1对应的值的后面 127.0.0.1:6379> append k1 abc (integer) 9 # 获取k1对应的值 127.0.0.1:6379> get k1 "value1abc"
|
strlen
得到key对应的值的长度
如果key对应的值不存在,返回0
1 2 3 4 5 6
| # 获取k1对应的值长度 127.0.0.1:6379> strlen k1 (integer) 9 # 获取k3对应的值的长度 127.0.0.1:6379> strlen k3 (integer) 0
|
incr和decr
incr:使key对应的值增1
decr:使key对应的值减1
注意:只有key对应的值为数字时才能使用
当incr或者decr后面的key不存在时,会自动创建,值默认为0,在0的基础上加1或者减1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| # 设置键值对k4 127.0.0.1:6379> set k4 1 OK # 增1 127.0.0.1:6379> incr k4 (integer) 2 # 增1 127.0.0.1:6379> incr k4 (integer) 3 # 减1 127.0.0.1:6379> decr k4 (integer) 2 # 减1 127.0.0.1:6379> decr k4 (integer) 1 # 试图让k1对应的值增1,报错 127.0.0.1:6379> incr k1 (error) ERR value is not an integer or out of range # 当incr或者decr后面的key不存在时,会自动创建,值默认为0 # 0的基础加1 127.0.0.1:6379> incr k5 (integer) 1 # 0的基础减1 127.0.0.1:6379> decr k6 (integer) -1
|
incrby和decrby
这个是incr、decr的升级版,可以自定义自增和自减的步长
注意:只有key对应的值为数字时才能使用
当incr或者decr后面的key不存在时,会自动创建,值默认为0,在0的基础上加步长或者减步长
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 使k4增10 127.0.0.1:6379> incrby k4 10 (integer) 11 # 使k4增100 127.0.0.1:6379> incrby k4 100 (integer) 111 # 使k4减10 127.0.0.1:6379> decrby k4 10 (integer) 101 # 使k4减100 127.0.0.1:6379> decrby k4 100 (integer) 1 # 当incr或者decr后面的key不存在时,会自动创建,值默认为0 # 0的基础加100 127.0.0.1:6379> decrby k8 100 (integer) -100 # 0的基础减100 127.0.0.1:6379> incrby k9 100 (integer) 100
|
mset和mget
mset可以同时设置多个键值对
mget可以同时获取多个键对应的值
1 2 3 4 5 6 7 8
| # 同时设置三个键值对 127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3 OK # 同时获取三个键对应的值 127.0.0.1:6379> mget key1 key2 key3 1) "value1" 2) "value2" 3) "value3"
|
msetnx
这个也可以同时设置多个键值对,和mset不同的是,这个设置的键值对中,如果之前存在了key,那么整个语句就不会执行成功,即有一个失败都失败
1 2 3 4 5 6
| # 之前存在了key3,所以语句不会执行成功,包括key4也不会生效 127.0.0.1:6379> msetnx key3 value3 key4 value4 (integer) 0 # 这个可以设置成功,原因在于没有和以及存在的键值对冲突 127.0.0.1:6379> msetnx key4 value4 key5 value5 (integer) 1
|
getrange
获取key对应的值的子字符串
语法:getrange <key> <起始位置> <结束位置>
,(包含起始位置和结束位置)
1 2 3 4 5 6
| # 获取k1的键值对 127.0.0.1:6379> get k1 "value1abc" # 截取k1的0~4位 127.0.0.1:6379> getrange k1 0 4 "value"
|
setrange
覆写对应位置的字符串,从起始位置出发
语法:setrange <key> <起始位置>
1 2 3 4 5 6 7 8 9
| # 获取k1的键值对 127.0.0.1:6379> get k1 "value1abc" # 从第五位开始覆写 127.0.0.1:6379> setrange k1 5 ikun (integer) 9 # 获取k1的键值对 127.0.0.1:6379> get k1 "valueikun"
|
setex
设置键值对的同时,设置其过期时间
语法:setex <key> <过期时间> <value>
1 2 3 4 5 6 7 8 9 10 11 12
| # 设置key6键值对的同时,设置其过期时间为60秒 127.0.0.1:6379> setex key6 60 value6 OK # 获取key6的过期时间 127.0.0.1:6379> ttl key6 (integer) 48 127.0.0.1:6379> ttl key6 (integer) 41 127.0.0.1:6379> ttl key6 (integer) 31 127.0.0.1:6379> ttl key6 (integer) -2
|
getset
以新值替换旧值,同时返回旧值
1 2 3 4 5 6 7 8 9
| # 获取k1的键值对 127.0.0.1:6379> get k1 "valueikun" # 使用getset,返回旧值 127.0.0.1:6379> getset k1 ikun "valueikun" # 获取k1的键值对 127.0.0.1:6379> get k1 "ikun"
|