Redis-3、String(字符串)

常用命令

append key value # 在原有的字符串后面追加,如果当前key不存在,就相当于set key
strlen key # 获取字符串的长度
incr key # 做+1操作(只适用于字符串是纯数字状态下,+1之后这个数据依然是字符串类型)
incrby key 10 # 指定增量
decr key # 做-1操作
decrby key 10 # 指定减量
getrange key 0 5 # 截取字符串,相当于java的subString
mset k1 v1 k2 v2 k3 v3 # 批量设置
mget k1 k2 k3 # 批量获取

进阶命令

setex key 10 value# 给key设置过期时间为10秒
setnx key value # 安全设置(如果key不存在才设置这个key返回1,如果存在不设置返回0,一般在分布式锁的时候很常用)

getset key value # 先get再set,如果key不存在则返回nil,如果存在,获取原来的值,再设置新值

思路拓展

如果使用redis保存一个对象,一般的做法是保存这个对象的Json字符串,这里有一个对于key的巧妙设计,见下

mset user:1:name "张三" user:1:age 18
# 这里 user:{id}:{属性} 这就是一个非常好的设计,可以很方便的拿到一些属性

String常见使用场景

  • 计数器:使用命令incr key

  • 统计多单位的数量key的设计:{文章}:{文章id}:{行为}

比如一篇文章的阅读数、收藏数、点赞数,可以这么设计:

127.0.0.1:6379> mset article:1:read 0 article:1:collection 0 article:1:praise 0
OK
127.0.0.1:6379> keys *
1) "article:1:praise"
2) "article:1:collection"
3) "article:1:read"
127.0.0.1:6379> incr article:1:praise
(integer) 1
127.0.0.1:6379> get article:1:praise
"1"
127.0.0.1:6379> 
  • 验证码:使用过期命令setex key 300 value设计可以是:{id}:{phoneNum} code
127.0.0.1:6379> setex 1:17600066366 30 8789
OK
127.0.0.1:6379> ttl  1:17600066366
(integer) 18
127.0.0.1:6379> ttl  1:17600066366
(integer) 17
127.0.0.1:6379> ttl  1:17600066366
(integer) 16
127.0.0.1:6379> ttl  1:17600066366
(integer) 16
127.0.0.1:6379> ttl  1:17600066366
(integer) 15
127.0.0.1:6379> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值