假設數據庫有一個user表,存入redis的鍵為users,值為Map<id,user>。如果不設置鍵的過期時間還可以做到。但是設置了鍵的過期時間后,當這個鍵過期了,從新把數據讀到Map<id,user>中,如果這時候只讀了一個user,比如{id=1,name=張三,mark=90},因為數據還沒讀取完,我們還沒把這個map放入redis。恰好這時有人修改了張三的數據,把mark修改成90,修改的代碼邏輯是先把數據庫的張三mark修改為90,然后去redis修改users對應的map的張三的數據,但是redis中現在還沒有users這個鍵。所以最后造成的結果是--->數據庫中:張三的mark為90 。 redis中:張三的mark為100。這種不一致的情況該怎么解決呢?
redis緩存如何做到與數據庫數據一致阿?
撒科打諢
2018-08-20 14:13:43