秒杀模块一个用户同一时间多次抢购怎么办
java吧
全部回复
仅看楼主
level 11
朕不灭
楼主
秒杀模块一个用户同一时间多次抢购怎么办
2019年01月04日 09点01分
1
level 11
朕不灭
楼主
原本想的用Redis的map判断,如果有
信息就失败,但是用户如果同时进行了两次访问,这时没有信息,岂不是两次都成功了
2019年01月04日 09点01分
2
北飞的企鹅👻
你操作的是多个Redis?如果是单个Redis的话不存在这种情况,Redis是线程安全的啊
2019年01月04日 10点01分
level 11
朕不灭
楼主
秒杀模块一个用户同一时间多次抢购怎么办
原本想的用Redis的map存信息判断,如果有
信息就失败,但是用户如果同时进行了两次访问,这时没有信息,岂不是两次都成功了
2019年01月04日 09点01分
3
level 11
朕不灭
楼主
10
2019年01月04日 09点01分
4
level 9
羽羽斩夜架ლ✨
这个在前端就可以解决 就是防止表单重复提交 js定义一个变量flag=true 提交一次以后修改为false 再次提交flag为false就不会提交到后台 如果是每个时段可以提交一次(比如1分钟) 就定义一个时间戳 用第二次的事件戳减去第一次的时间戳大于1分钟就再次提交 如果觉得在前端做不安全 也可以去后端 把变量存在session 或者token中
2019年01月04日 09点01分
5
朕不灭
后端怎么做,基于rediswatch
2019年01月04日 09点01分
羽羽斩夜架ლ✨
@朕不灭
移动端就把变量存token中 web端就存session中
2019年01月04日 09点01分
晴天之N
提交一次就会变false,那么有没有考虑过一个情况就是在按提交的时候你刚好断网,但是变false不过你没向服务器提交成功。接着你联网,想在提交但是已经false了
2019年01月05日 01点01分
晴天之N
后端那个安全点,前端重复提交不太好
2019年01月05日 01点01分
level 13
黑熊猫爱看书
Redis的话,Setnx(),不存在就设置值,存在就失败, 根据返回值判断,key根据用户id,唯一就行
2019年01月04日 13点01分
6
朕不灭
不太懂,什么意思,set保存用户数据吗
2019年01月06日 06点01分
level 1
小王问题多
不行把程序的执行块 加把同步锁,上次的没运行结束前,只会在外面等着,等前面那个执行结束,这个才可以运行,到时再查redis就不会出现没有数据的情况了,还有,这种情况最好前端后端一起控制,否则会越来越麻烦。
2019年01月05日 00点01分
7
level 8
薇薇薇薇薇蒽
一个用户可以登录2次?
2019年01月05日 01点01分
8
朕不灭
不需要多次登陆啊
2019年01月05日 11点01分
薇薇薇薇薇蒽
@朕不灭
用户不能多次登录 那怎么会同事提交?
2019年01月07日 01点01分
level 11
朕不灭
楼主
10
2019年01月05日 11点01分
10
level 11
朕不灭
楼主
9
2019年01月05日 12点01分
11
level 11
朕不灭
楼主
8
2019年01月06日 06点01分
12
level 7
仓井井空空
加锁
2019年01月07日 02点01分
13
level 8
亚洲小李子º
记得插眼, 小学生之手
2019年01月07日 17点01分
14
level 8
天蓝色杜蕾丝
加同步锁
2019年01月09日 03点01分
15
1