redis有序集合实现撒花逻辑

产品需求:

1.对一个feed的撒花操作每人只能一次

2.撒花可以撤销

3.撒花结果需要展示,按照时间排序,最近撒花记录放在最先

4.要显示撒花数量,是否撒过花

之前这种逻辑用mc实现,真是麻烦,无法满足既有时间轴排序又要快速查找的需求,现在新产品中直接采用redis,而具备这两种特性的数据结构就是有序集合

下面具体来说一下用sort set怎样实现撒花的各种需求:

1. 查询是否已撒花    

操作:ZRANK    prise_record   uid

结果:返回nil表示没有撒过花,返回>=0,表示已经撒过

2.撒花

操作:ZADD  prise_record  time_now  uid

结果:>0,表示添加成功

3.撤销撒花

操作:ZREM  prise_record  uid

结果:>0,删除成功

4.展示撒花记录

操作:ZREVRANGE  prise_record  0  count

结果:按照时间顺序返回结果,最近的记录排在最前

5.撒花数量

操作:ZCOUNT  prise_record  start_time   end_time

结果:返回时间段内的记录数量 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值