如题:
如何设计一个点赞统计的功能 ,每天每人只能点击一次,没有登陆状态
我是通过cookie的思路 控制每人每天只能点击一次
如果缓存被清空了,就会有bug 访客会再次重新点击
如何设计?
如果控制ip 就需要存入数据库,是否有其它最优方案?
如题:
如何设计一个点赞统计的功能 ,每天每人只能点击一次,没有登陆状态
我是通过cookie的思路 控制每人每天只能点击一次
如果缓存被清空了,就会有bug 访客会再次重新点击
如何设计?
如果控制ip 就需要存入数据库,是否有其它最优方案?
感觉这个问题的关键点在身份的确认,无论是种在cookie中还是通过ip限制都是不靠谱的,cookie可以清楚掉,至于ip我们获取的是一个出口ip(一个路由可能有多个电脑使用,但他们的出口ip一样,那么他们这些不同的电脑算是一个,还是多个呢?)
这个应该业务决定的,通过业务决定什么才叫做一个独立的用户,如果对点赞的数据可靠性要求比较高,最好还是要登录操作,希望对你有帮助
你这样想哈,要知道这个人(今天)有没有点过赞,那就肯定要一个东西来存储状态,
这个状态可以放前端cookie存,可以放后端数据库存,再高深一点就是借助其他同步状态存储。
那么你这个点赞状态有没有和其他状态是同步的呢?比如说点完赞本用户今天头像就多了个啥标志之类的,就可以依靠这个标志来判断是否点赞,这就是借助了标志存储状态了。
反正必须要一个东西来存啊。
3 回答718 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答560 阅读✓ 已解决
4 回答750 阅读✓ 已解决
4 回答734 阅读
4 回答1.1k 阅读
5 回答787 阅读
前提:没有登陆状态
如你所说,通过
cookie
控制,是有缺陷的。建议:
这种时效性的操作,可以用
redis
一类的缓存来做,没必要持久化存储。当然,后端存储,无论是否持久化,你都是需要客户端的凭证的,也就是
IP
。方案:
redis
存储当天点赞的IP
集合,如果在集合里,则限制点赞。每天零点,清空集合,重新记录即可。
参考:redis-set