關於解決後端重複提交的問題
阿新 • • 發佈:2021-02-15
技術標籤:java基礎學習
之前在網上看過有很多種解決重複提交的方式,在這裡我想做一種特別簡單實用的方式,親測有效。
@RestController public class RedisTestController { @Autowired RedisTemplate redisTemplate; @GetMapping("/getRedisKey") public void getRedisKey()throws Exception{ InetAddress localHost = Inet6Address.getLocalHost(); String address = localHost.getHostAddress(); ValueOperations ops = redisTemplate.opsForValue(); if (ops.get(address)!=null){ throw new Exception("請不要重複提交"); } ops.increment(address); redisTemplate.expire(address,3,TimeUnit.SECONDS); } }
例如根據提交介面測試的IP來進行重複性的校驗,在3秒內不允許使用者進行多次提交。
用postman來連續進行點選的時候,除了第一次是正常的情況外,後續3秒內的其餘請求均會直接報錯。
用jmeter來進行多執行緒訪問,模擬多執行緒某使用者進行重複提交,也可以起到相同的作用。然後再redis裡面,效果如下圖
可以看到計數器也只有一次成功的記錄。並且檢視jmeter的結果樹報告,會發現除了第一次是正常的綠色成功外,其餘是紅色失敗的請求。
達到想要的效果