1. 程式人生 > 其它 >關於解決後端重複提交的問題

關於解決後端重複提交的問題

技術標籤: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的結果樹報告,會發現除了第一次是正常的綠色成功外,其餘是紅色失敗的請求。

達到想要的效果