redis中文学习网 https://www.redis.net.cn

get/set设置获取字符串

127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> get key1
"hello"

append追加字符串

127.0.0.1:6379> append key1 " world"            # 如果key1不存在,则相当于set
(integer) 11
127.0.0.1:6379> get key1
"hello world"

strlen获取字符串长度

127.0.0.1:6379> strlen key1
(integer) 11

判断key是否存在

127.0.0.1:6379> exists key1
(integer) 1

value每次加一

127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> get views
"1"

value每次加步长

127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> incrby views 10        # 指定步长为10
(integer) 10
127.0.0.1:6379> incrby views 10
(integer) 20
127.0.0.1:6379> incrby views 10
(integer) 30
127.0.0.1:6379> get views
"30"
127.0.0.1:6379> decrby views 5
(integer) 25
127.0.0.1:6379> decrby views 5
(integer) 20
127.0.0.1:6379> get views
"20"

截取字符串

127.0.0.1:6379> set key1 hello,world
OK
127.0.0.1:6379> get key1
"hello,world"
127.0.0.1:6379> getrange key1 0 3          #从下标0开始,到下标3结束
"hell"
127.0.0.1:6379> getrange key1 0 -1
"hello,world"

替换字符串

127.0.0.1:6379> set k abcdefghijk
OK
127.0.0.1:6379> get k
"abcdefghijk"
127.0.0.1:6379> setrange k 3 XXX          #替换k,从第3个字符串开始,替换的内容是XXX
(integer) 11
127.0.0.1:6379> get k
"abcXXXghijk"

设置过期时间

127.0.0.1:6379> setex k 20 hello          #设置k为hello的过期时间为20秒
OK
127.0.0.1:6379> ttl k                     #ttl命令可查看剩余时间
(integer) 17
127.0.0.1:6379> ttl k
(integer) 14
127.0.0.1:6379> ttl k
(integer) 11
127.0.0.1:6379> get k
"hello"
127.0.0.1:6379> ttl k
(integer) 0
127.0.0.1:6379> ttl k
(integer) -2
127.0.0.1:6379> ttl k
(integer) -2                              # -2 表示已经过期了
127.0.0.1:6379> get k
(nil)

setnx 如果存在就不设置,不存在则设置

127.0.0.1:6379> set k hello
OK
127.0.0.1:6379> get k
"hello"
127.0.0.1:6379> setnx j world             #j不存在,可设置成功
(integer) 1
127.0.0.1:6379> keys *
1) "j"
2) "k"
127.0.0.1:6379> setnx k redis             #k已经存在,设置失败,k还是原来的值
(integer) 0
127.0.0.1:6379> get k
"hello"

一次设置/获取多个值

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"
127.0.0.1:6379> mget k1 k3
1) "v1"
2) "v3"
127.0.0.1:6379> msetnx k1 newv1 k4 v4        #当使用msetnx时,只要设置的值中在已经有存在的,就会全部设置失败,是一个原子性操作!
(integer) 0
127.0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"

一个对象怎么考虑设置

127.0.0.1:6379> set user:1 {username:tom,age:18}           #不建议这样考虑,还要在json字符串和对象之间转换,浪费效率
OK
127.0.0.1:6379> get user:1
"{username:tom,age:18}"
127.0.0.1:6379> mset user:1:username tom user:1:age 18     #建议这样考虑,将key设置为详细的详细的属性信息,value为属性值即可
OK
127.0.0.1:6379> mget user:1:username user:1:age
1) "tom"
2) "18"

getset组合

127.0.0.1:6379> getset k hello
(nil)
127.0.0.1:6379> get k
"hello"
127.0.0.1:6379> getset k redis
"hello"
127.0.0.1:6379> get k
"redis"