求大神解答一下一个小白程序员的疑惑
資深大佬 : Joezeo 12
今天跟我一位朋友讨论一个防止表单二次提交的问题,他是考虑用 redis,我的解决方案是在本地使用锁来保证请求在处理完成之前同一用户的其他请求会被忽略,代码如下:
private static final Set<String> LOCK_SET = new CopyOnWriteArraySet<>(); public String execute(){ ... synchronized (this) { if (LOCK_SET.contains(uuid)) { return "failed"; } LOCK_SET.add(uuid); } ... }
然后就跟他杠上了,他的看法是当其他用户的请求来时会被锁住等待,用 redis 更快。
而我的看法是这个问题用 redis 有点太大材小用了,我认为在这个情况下等待锁的时间是远远小于连接 redis 的开销的。
有大神能帮忙解答一下吗,感激不尽。
大佬有話說 (17)