redis有序集合实现撒花逻辑

本文介绍如何使用Redis有序集合实现产品的撒花功能,包括限制每人仅能操作一次、支持撤销、展示撒花记录及数量等需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

产品需求:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值