高并发下收藏功能设计
- 2019 年 10 月 25 日
- 筆記
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32534855/article/details/101678077
最近公司要做个文章收藏功能,说说自己的想法
问题:
- 用户可能频繁点击收藏按钮(防止连点)
- 频繁点击(收藏,不收藏)按钮
- 高并发下触发
设计:
- 接口前添加限流方案,推荐通过用户id限流。1秒可执行2条左右。然后客户端显示(收藏成功,收藏失败)。防止用户快速点击
- 存储记录前用redis拦截一下。判断是否收藏过具体做法
- 用redis的set结构,缓存key="cache:key:"+数据id
- 判断是否收藏过用sismember方法。sismember(key,用户id)
- 如果sismember返回的true,说明收藏过。然后去查询该记录,并删除。反之新增
- 如果设计2想再快点。就可以在查询数据库的中间添加消息队列等