Redis 03 String
应用场景:计数器、统计多单位的数量、粉丝数、对象缓存存储
赋值
直接赋值
set
127.0.0.1:6379> set hello "Hello World"
OK
不存在才赋值
setnx
127.0.0.1:6379> setnx hello "Hello"
(integer) 0
127.0.0.1:6379> get hello
"Hello World"
由于 hello 已经有值赋值没有成功。
127.0.0.1:6379> setnx hello1 "Hello"
(integer) 1
127.0.0.1:6379> get hello1
"Hello"
不存在的 key 才能赋值。
批量赋值
mset
127.0.0.1:6379> mset hello1 "Hello1" hello2 "Hello2"
OK
127.0.0.1:6379> get hello1
"Hello1"
127.0.0.1:6379> get hello2
"Hello2"
原子性批量赋值
msetnx
127.0.0.1:6379> msetnx hello2 "Hello World2" hello3 "Hello World3"
(integer) 0
127.0.0.1:6379> get hello2
"Hello2"
127.0.0.1:6379> get hello3
(nil)
设置对象
set 对象
127.0.0.1:6379> set user:1 {name:sail,age:27}
OK
127.0.0.1:6379> set user:2 {name:hello,age:28}
OK
127.0.0.1:6379> get user:1
"{name:sail,age:27}"
127.0.0.1:6379> get user:2
"{name:hello,age:28}"
设置一个 user:1 和 user:2 对象,值为 Json 字符串来保存一个对象。
取值
直接取值
get
127.0.0.1:6379> get hello
"Hello World"
先取值再赋值
getset
127.0.0.1:6379> getset hello4 "Hello4"
(nil)
由于 hello4 前面没有赋值,这里先取值为空。
追加字符串
append
127.0.0.1:6379> append hello "Hello World"
(integer) 11
127.0.0.1:6379> get hello
"Hello World"
如果当前 key 不存在,就相当于 set key。
判断 key 是否存在
exists
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379> exists hello1
(integer) 0
存在返回 1,不存在返回 0。
获取字符串的长度
strlen
127.0.0.1:6379> strlen hello
(integer) 11
自增 1
incr
127.0.0.1:6379> set num1 0
OK
127.0.0.1:6379> incr num1
(integer) 1
127.0.0.1:6379> incr num1
(integer) 2
执行一次会让对应 key 的值加 1。
自减 1
decr
127.0.0.1:6379> decr num1
(integer) 1
127.0.0.1:6379> decr num1
(integer) 0
执行一次会让对应 key 的值减 1。
自增步长
incrby
127.0.0.1:6379> incrby num1 10
(integer) 10
127.0.0.1:6379> incrby num1 10
(integer) 20
执行一次会按照设置的步长增加一次
自减步长
decrby
127.0.0.1:6379> decrby num1 10
(integer) 10
127.0.0.1:6379> decrby num1 10
(integer) 0
执行一次会按照设置的步长减少一次
截取字符串
截取指定下标的字符串
getrange
127.0.0.1:6379> getrange hello 0 4
"Hello"
这里截取的规则是含头含尾
截取全部字符串
getrange 0 -1
127.0.0.1:6379> getrange hello 0 -1
"Hello World"
这样与 get key 的效果一致,建议还是用 get key,更加简洁。
替换指定位置开始的字符串
setrange
127.0.0.1:6379> setrange hello 6 sail
(integer) 11
127.0.0.1:6379> get hello
"Hello saild"
设置过期
setex
127.0.0.1:6379> setex hello 60 "Hello World"
OK
最后一个参数是设置替换成的字符串
查看过期剩余时间
ttl
127.0.0.1:6379> ttl hello
(integer) 56
127.0.0.1:6379> ttl hello
(integer) 55
127.0.0.1:6379> ttl hello
(integer) -2
127.0.0.1:6379> get hello
(nil)
当结果为 -2 时代表已到期,其值为空。