redis雙刪和最后刪一次區別?
redis在并發下有數據一致性的問題請求一:1.1修改數據庫數據 1.2 刪除redis數據
請求二:2.1修改數據庫數據 2.2 刪除redis數據
請求三:3.1查詢redis中數據 3.2查詢數據庫數據 3.3 新查到的數據寫入redis
添加延時雙刪策略后的情況
請求一:1.1修改數據庫數據 1.2 刪除redis數據 1.3 延時3--5s再去刪除redis中數據
請求二:2.1修改數據庫數據 2.2 刪除redis數據 2.3 延時3--5s再去刪除redis中數據
請求三:3.1查詢redis中數據 3.2 查詢數據庫數據 3.3 新查到的數據寫入redis
雙刪策略為什么能解決問題:
因為存在了延時時間,故1.3或2.3 一定是最后執行的一步操作(并發中的延時一定要理解)
延時的根本目的就是為了讓程序先把3.3執行完,再去刪除redis