高并发下收藏功能设计

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

问题:

  1. 用户可能频繁点击收藏按钮(防止连点)
  2. 频繁点击(收藏,不收藏)按钮
  3. 高并发下触发
  4. 列表页面显示是否收藏

设计:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章