Redis五大数据类型之 String 经常用到的命令
1.步长 可用于微信文章浏览量(incr、decr、INCRBY、DECRBY)
append name "hello world" #追加字符串 没有这个key就新建
STRLEN name #查看字符串长度
incr views #每次在key值上+1 自增
decr views #每次在key值上-1 自减
INCRBY views 10 #在key值上+10
DECRBY views 2 #在key值上-2
2.字符串范围(GETRANGE)
localhost:2>set key1 "hello zhangsan"
"OK"
localhost:2>GETRANGE key1 0 4 #截取字符串[0,4]
"hello"
localhost:2>GETRANGE key1 0 -1 #获取全部的字符串 和get key是一样的
"hello zhangsan"
3.字符串替换(SETRANGE)
localhost:2>set key2 abcdefg
"OK"
localhost:2>get key2
"abcdefg"
localhost:2>SETRANGE key2 1 2021 #从下标1的位置开始替换值
"7"
localhost:2>get key2
"a2021fg"
4. 设置过期时间(SETEX) 和 不存在时设置(SETNX)
SETEX (set with expire) #设置过期时间
SETNX (set if not exist) #不存在时设置 (在分布式锁中会常常使用)
localhost:2>SETEX key3 30 "hello zhangsan" #设置key30秒后过期
"OK"
localhost:2>ttl key3
"23"
localhost:2>SETNX key4 "lisi" #如果key4不存在时创建并赋值"lisi"
"1"
localhost:2>SETNX key4 "wangwu" #此时key4存在 再赋值失败
"0"
localhost:2>get key4
"lisi"
5. 同时设置多个值和获取多个值(MSET、MGET)
localhost:2>MSET k1 v1 k2 v2 k3 v3 #同时设置多个值
"OK"
localhost:2>keys *
1) "k3"
2) "k2"
3) "k1"
localhost:2>MGET k1 k2 k3 #同时获取多个值
1) "v1"
2) "v2"
3) "v3"
# MSETNX 没有时就设置值 但是是一个原子性的操作 要么同时成功 要么同时失败
localhost:2>MSETNX k1 v1 k4 v4
"0"
localhost:2>keys *
1) "k3"
2) "k2"
3) "k1"
6.对象(user:{id}:{filed})
user:{id}:{filed} 这里的key是一个对象
localhost:2>mset user:1:name zhangsan user:1:age 18
"OK"
localhost:2>mget user:1:name user:1:age
1) "zhangsan"
2) "18"
7. 先set再get(getset)
localhost:2>getset a1 lisi #如果不存在值,则返回null
null
localhost:2>get a1
"lisi"
localhost:2>getset a1 wangwu #如果存在值,获取原来的值 并设置新的值
"lisi"
localhost:2>get a1
"wangwu"
String类型的使用场景:value 除了是字符串也可以是数字
- 计数器
- 统计多单位的数量 (微信阅读数量)
- 粉丝数量
- 对象缓存存储
我是听狂神的课并进行记录。狂神说的非常好,大家快去学狂神说Java