高并发下收藏功能设计

  • 2019 年 10 月 25 日
  • 筆記

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_32534855/article/details/101678077

最近公司要做个文章收藏功能,说说自己的想法

问题:

  1. 用户可能频繁点击收藏按钮(防止连点)
  2. 频繁点击(收藏,不收藏)按钮
  3. 高并发下触发

设计:

  1.  接口前添加限流方案,推荐通过用户id限流。1秒可执行2条左右。然后客户端显示(收藏成功,收藏失败)。防止用户快速点击
  2.  存储记录前用redis拦截一下。判断是否收藏过具体做法
    1. 用redis的set结构,缓存key="cache:key:"+数据id
    2. 判断是否收藏过用sismember方法。sismember(key,用户id)
    3. 如果sismember返回的true,说明收藏过。然后去查询该记录,并删除。反之新增
  3.  如果设计2想再快点。就可以在查询数据库的中间添加消息队列等