如何设计一个每天每人只能点赞一次的功能(无状态)?

如题:
如何设计一个点赞统计的功能 ,每天每人只能点击一次,没有登陆状态

我是通过cookie的思路 控制每人每天只能点击一次

如果缓存被清空了,就会有bug 访客会再次重新点击
如何设计?

如果控制ip 就需要存入数据库,是否有其它最优方案?

FFIVE
浏览 1280回答 11
11回答

慕的地8271018

前提:没有登陆状态如你所说,通过 cookie 控制,是有缺陷的。建议:这种时效性的操作,可以用 redis 一类的缓存来做,没必要持久化存储。当然,后端存储,无论是否持久化,你都是需要客户端的凭证的,也就是 IP。 方案:redis 存储当天点赞的 IP 集合,如果在集合里,则限制点赞。每天零点,清空集合,重新记录即可。 参考:redis-set

Qyouu

经验告诉我说。不登录的话,没有唯一标识,(IP不算唯一标识)。真的限制不住。 防住的都是普通用户。

眼眸繁星

想完全控制就得在服务端记录用户的唯一标识,数据库或者文本文件都可以

幕布斯6054654

你这样想哈,要知道这个人(今天)有没有点过赞,那就肯定要一个东西来存储状态,这个状态可以放前端cookie存,可以放后端数据库存,再高深一点就是借助其他同步状态存储。那么你这个点赞状态有没有和其他状态是同步的呢?比如说点完赞本用户今天头像就多了个啥标志之类的,就可以依靠这个标志来判断是否点赞,这就是借助了标志存储状态了。反正必须要一个东西来存啊。

慕斯王

不管cookie还是ip,最关键是看你的这个功能面向的对象,对象是普通用户cookie足矣

慕村225694

如果没有登陆状态怎么判断“每人”呢?这里的“每人”应该是指每个用户吧。用户每天的点赞状态要判断,要判断就要存储。所以,我是没有想到好的方法。
打开App,查看更多内容
随时随地看视频慕课网APP