冪等性的實現

冪等性

1. 生成key的方式

記得保證redis生成的key和刪除的key是成功的(看返回值)

1)允許表單跳轉

這種情況比較容易,比如在列表中添加一條記錄,可以在列表頁面生成一個key,放到redis中,同時在添加頁面時帶着這個key。等到提交時,把key也提交,後臺根據key與redis中進行比較,有的話保存,保存成功就刪除這個key。而沒有時就直接放棄保存(重複提交)

2)不允許表單跳轉

可以將提交的表單進行hash運算,生成一個key,設置一個有效時間,用來規定該時間段內提交的都是重複提交。如果在規定時間內再次提交相同的表單數據,那麼hash值也是相同的,這樣可以給前臺提示是否要重複提交(可能用戶就想重複提交,得給他這個機會)。hash值的相同來判斷他是否爲重複提交

2. sql索引

有些數據有業務上的唯一性,可以採用這種方法。
比如,一個活動只允許用戶註冊一次,註冊的方式是使用手機號的方式。那麼可以通過活動ID+手機號的方式創建唯一索引。插入數據時通過mysql的唯一索引的唯一性來保證數據不會重複提交
聯合唯一索引創建示例

3.不知道有沒有類似語句或觸發器之類的
通過類似sql語句,有數據啥也不幹,沒有數據才進行插入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章