redis一些常用场景记录

Redis基本类型有5种,分别是:string、hash、list、set、zset

hash类型的应用场景

购物车的商品添加,数量增减

实现原理:

1、初次选择商品到购物车

此处设计为: hset 购物车标识:用户ID:数据类型 商品ID 数量
hset car:10000:hash 1000 1
hmset car:10000:hash 1000 1 1001 2

2、对已经选择的商品进行数量上的添加
hincrby car:10000:hash 1000 5 

3、移除已经选择的商品
hdel car:10000:hash 1001 

4、查看已经选择的商品数量
hlen car:10000:hash 
 

list类型的应用场景

涉及命令解析

往列表头部添加数据: 
lpush key value [value...]

往列表尾部添加数据:
rpush key value [value...]

取出头部数据并移除
lpop key

取出尾部数据并移除
rpop key

取出一段区间的数据
lrange key start stop

可以模拟场景 - 常用的数据结构

Stack (栈) = lpush + lpop -> FILO
Queue(队列) = lpush + rpop
Blocking MQ(阻塞队列) = LPUSH + BRPOP

应用场景: 查看最新的微博信息

用户1关注了用户2
1、用户2发表信息, 信息ID为1
lpush msg:user1 1

2、用户2发表信息, 信息ID为2
lpush msg:user1 2

3、查看最新微博信息
lrange msg:user1 0 5

set应用场景

微信抽奖小程序

1、添加所有参与抽奖的用户ID
127.0.0.1:6379> sadd random:userid 1 2 3 4 5
(integer) 5

2、查看所有抽奖用户列表
127.0.0.1:6379> smembers random:userid
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

3、从所有用户中抽取两个中奖用户
127.0.0.1:6379> srandmember random:userid 2
1) "3"
2) "5"
127.0.0.1:6379> 

zset的应用场景

排行榜的实现

1、点击新闻
127.0.0.1:6379> zincrby hotNews:20200303:zset 1 中国加油 
"1"
127.0.0.1:6379> zincrby hotNews:20200303:zset 1000 战胜疾病
"1000"
127.0.0.1:6379> zincrby hotNews:20200303:zset 1000 战胜疾病2
"1000"

2、展示当日排行榜前十
127.0.0.1:6379> zrevrange hotNews:20200303:zset 0 9 withscores
1) "\xe6\x88\x98\xe8\x83\x9c\xe7\x96\xbe\xe7\x97\x852"
2) "1000"
3) "\xe6\x88\x98\xe8\x83\x9c\xe7\x96\xbe\xe7\x97\x85"
4) "1000"
5) "\xe4\xb8\xad\xe5\x9b\xbd\xe5\x8a\xa0\xe6\xb2\xb9"
6) "1"


3、3日结果榜单计算
添加3日相同榜单
127.0.0.1:6379> zincrby hotNews:20200303:zset 10 test
"10"
127.0.0.1:6379> zincrby hotNews:20200302:zset 10 test
"10"
127.0.0.1:6379> zincrby hotNews:20200301:zset 10 test
"10"
使用交并集实现数据的累计计算
ZUNIONSTORE hotNews:20200301-20200303:zset 3 hotNews:20200301:zset hotNews:20200302:zset hotNews:20200303:zset
(integer) 4

4、展示三日内计算的结果榜单
127.0.0.1:6379> zrevrange hotNews:20200301-20200303:zset 0 3 withscores
1) "\xe6\x88\x98\xe8\x83\x9c\xe7\x96\xbe\xe7\x97\x852"
2) "1000"
3) "\xe6\x88\x98\xe8\x83\x9c\xe7\x96\xbe\xe7\x97\x85"
4) "1000"
5) "test"
6) "30"
7) "\xe4\xb8\xad\xe5\x9b\xbd\xe5\x8a\xa0\xe6\xb2\xb9"
8) "1"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值