为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
FFIVE 2019-03-18 02:46:11
如题:如何设计一个点赞统计的功能 ,每天每人只能点击一次,没有登陆状态 我是通过cookie的思路 控制每人每天只能点击一次 如果缓存被清空了,就会有bug 访客会再次重新点击 如何设计? 如果控制ip 就需要存入数据库,是否有其它最优方案?
查看完整描述

11 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

前提:没有登陆状态
如你所说,通过 cookie 控制,是有缺陷的。
建议:
这种时效性的操作,可以用 redis 一类的缓存来做,没必要持久化存储。
当然,后端存储,无论是否持久化,你都是需要客户端的凭证的,也就是 IP

方案:
redis 存储当天点赞的 IP 集合,如果在集合里,则限制点赞。
每天零点,清空集合,重新记录即可。

参考:redis-set

查看完整回答
反对 回复 2019-03-18
?
Qyouu

TA贡献1786条经验 获得超11个赞

经验告诉我说。不登录的话,没有唯一标识,(IP不算唯一标识)。真的限制不住。

防住的都是普通用户。

查看完整回答
反对 回复 2019-03-18
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

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

查看完整回答
反对 回复 2019-03-18
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-03-18
?
慕斯王

TA贡献1864条经验 获得超2个赞

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

查看完整回答
反对 回复 2019-03-18
?
慕村225694

TA贡献1880条经验 获得超4个赞

如果没有登陆状态怎么判断“每人”呢?这里的“每人”应该是指每个用户吧。用户每天的点赞状态要判断,要判断就要存储。所以,我是没有想到好的方法。

查看完整回答
反对 回复 2019-03-18
  • 11 回答
  • 0 关注
  • 1279 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信