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