点赞、签到、秒杀的设计与实现(真实场景)

前言

这次来总结思考一下工作中的两个功能的设计与实现,一是丰享达人榜,二是丰享签到活动,三是商城秒杀活动,这里涉及到典型的互联网应用场景,​都是tps,qps可能较高,要求接口延迟较短,有较好的用户交互体验。当然我们不可能像互联网大厂那样自研中间件,数据的存储无疑就是redis和mysql,从前面的要求来看,我们不能每次操作都对数据库进行操作,好在这类数据都不算敏感,可以容许因为异常导致的丢失和不准确,所以基本思路应该就是:主要依赖于redis缓存的crud操作,异步再去持久化数据到数据库,接下来看看具体的实现。

1 丰享达人榜

1积分排行列表

数据库表:  rank_like{ id,date,theme_id(主题),user_id,balance(余额),integral(积分)}

积分排行列表是由数据组计算好入库,每天更新一次,最多100条。这里以date和theme_id为索引,过滤之后就是100条数据,再按balance或者integral做一个order by压力不大。这里没有要用户的信息比如头像,如果需要完全可以冗余到前面那个表

缓存 :String类型  key为:RANK_LIKE_${theme_id}_${date},value为排好序的列表

这里可以给这个列表设置一个两小时String类型缓存,直接把排好序的列表数据序列化反序列化,date参数可以防止因为两小时缓存跨天的时候不失效,所以这个列表的数据展示压力不大。

2列表用户的点赞总数量、当前用户是否已经点赞

方案1

缓存:Hash类型,key为RANK_USER_LIKE_${theme_id}_{list_user_id},field为${cur_user_id},value为是否点赞0/1

    点赞取消点赞操作只需要hset RANK_USER_LIKE_${theme_id}_{list_user_id} ${cur_user_id} 0/1就行了࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值