String适用场景
?既可以是字符串,也可以是数字
? ? ? ? 1.计数器
? ? ? ? 2.统计多单位的数量
? ? ? ? 3.粉丝数
? ? ? ? 4.对象缓存存储
1.字符串拼接
APPEND name 456 #将name的值后面拼接456
#如果本身键值对不存在,则会创建一个键为name,值为456的新的键值对
(integer) 6 #返回拼接完后的总长度(拼接前name的长度为3)
2.获取字符串长度
STRLEN name
(integer) 6 #长度为6
3.自增
默认自增为1
incr values
(integer) 2 #自增后的值为2
4.自减
decr values
(integer) 1 #自减后的值为1
5.设置自增步长
INCRBY values 10
(integer) 11 #加完后为10
incr values
(integer) 12 #只能持续一次,不是每次都是按照10来增加
6.设置自减步长
DECRBY value 10
(integer) -10
#同上也是只能持续一次
7.获取字符串区间
GETRANGE name 0 3 #[0,3]端点包括,是闭区间
GETRANGE name 0 -1 #获取整个值的长度
8.修改指定区间的数据
GETRANGE name 0 -1
"hello,world"
SETRANGE name 4 123 #从name下标为4开始修改,替换后面长度为3的数据(因为“123”的长度为3)
(integer) 11
get name
"hell123orld"
9.设置一个键值对并指定过期时间
SETEX name2 30 hello #设置键为name2值为hello的键值对,并将过期时间设为30s
#如果本身就有这个键值对了,那么则会覆盖
10.在设置之前判断值是否存在,不存在创建,存在就不创建(分布式锁中常用)
SETNX name 456
(integer) 0 #本身就有了,不成功
SETNX name2 456
(integer) 1 #本身有,成功
11.批量设置值
mset k1 v1 k2 v2 k3 v3
keys *
1) "k3"
2) "name"
3) "name2"
4) "k2"
5) "k1"
12.批量获取值
mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
13.批量设置值并判断是否存在
与10结合
MSETNX name name1 name2 name
(integer) 0 #本身都有
14.使用mset设置对象
mset user:1:name zhangsan user:1:age 2
#此代码相当于设置了一个user对象,id为1,其中name属性为zhangzsan,age属性为2
#格式为 对象名:id:属性键 属性值
15.使用mget查找对象
mget user:1:name user:1:age
1) "zhangsan"
2) "2"
#使用规则 对象名:id:键 值
16.getset
GETSET name 123 #get?set,相当于先get再set
|