亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

redis數(shù)據(jù)一致性之延時(shí)雙刪策略詳解

 更新時(shí)間:2023年09月05日 11:11:27   作者:無形風(fēng)  
在使用redis時(shí),需要保持redis和數(shù)據(jù)庫數(shù)據(jù)的一致性,最流行的解決方案之一就是延時(shí)雙刪策略,今天我們就來詳細(xì)刨析一下,需要的朋友可以參考下

在使用redis時(shí),需要保持redis和數(shù)據(jù)庫數(shù)據(jù)的一致性,最流行的解決方案之一就是延時(shí)雙刪策略,今天我們就來詳細(xì)刨析一下

注意:要知道經(jīng)常修改的數(shù)據(jù)表不適合使用redis,因?yàn)殡p刪策略執(zhí)行的結(jié)果是把redis中保存的那條數(shù)據(jù)刪除了,以后的查詢就都會(huì)去查詢數(shù)據(jù)庫。所以redis使用的是讀遠(yuǎn)遠(yuǎn)大于改的數(shù)據(jù)緩存。

1,首先要理解在并發(fā)環(huán)境下redis數(shù)據(jù)一致性的問題所在

在多線程并發(fā)情況下,假設(shè)有兩個(gè)數(shù)據(jù)庫修改請(qǐng)求,為保證數(shù)據(jù)庫與redis的數(shù)據(jù)一致性,
修改請(qǐng)求的實(shí)現(xiàn)中需要修改數(shù)據(jù)庫后,級(jí)聯(lián)修改redis中的數(shù)據(jù)。
請(qǐng)求一:1.1修改數(shù)據(jù)庫數(shù)據(jù)		1.2 修改redis數(shù)據(jù)
請(qǐng)求二:2.1修改數(shù)據(jù)庫數(shù)據(jù)		2.2 修改redis數(shù)據(jù)
并發(fā)情況下就會(huì)存在1.1 ---> 2.1 ---> 2.2 ---> 1.2的情況 
(一定要理解線程并發(fā)執(zhí)行多組原子操作執(zhí)行順序是可能存在交叉現(xiàn)象的)
此時(shí)存在的問題就是:
	1.1修改數(shù)據(jù)庫的數(shù)據(jù)最終保存到了redis中,2.1在1.1之后也修改了數(shù)據(jù)庫數(shù)據(jù)。
	此時(shí)出現(xiàn)了redis中數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù)不一致的情況,在后面的查詢過程中就會(huì)長(zhǎng)時(shí)間去先查redis,
	從而出現(xiàn)查詢到的數(shù)據(jù)并不是數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)的嚴(yán)重問題。
問題解決:
	修改數(shù)據(jù)庫級(jí)聯(lián)修改redis數(shù)據(jù)改為  修改數(shù)據(jù)庫數(shù)據(jù)后級(jí)聯(lián)刪除redis數(shù)據(jù)
	至于是先執(zhí)行1.2的redis刪除,還是限制性2.2的redis刪除,無關(guān)緊要。
	結(jié)果都是redis中數(shù)據(jù)已被刪除。之后的查詢就會(huì)由于redis中沒有數(shù)據(jù)而去查數(shù)據(jù)庫,
	此時(shí)即不會(huì)存在查詢到的數(shù)據(jù)和數(shù)據(jù)庫的數(shù)據(jù)不一致的情況。

2,上面詳解了redis數(shù)據(jù)一致性的問題所在,并提供了單刪策略來解決問題但此時(shí)依然存在比較嚴(yán)重的問題。

上面的單刪策略情況如下:
修改請(qǐng)求的實(shí)現(xiàn)中需要修改數(shù)據(jù)庫后,級(jí)聯(lián)刪除redis中的數(shù)據(jù)。
請(qǐng)求一:1.1修改數(shù)據(jù)庫數(shù)據(jù)		1.2 刪除redis數(shù)據(jù)
請(qǐng)求二:2.1修改數(shù)據(jù)庫數(shù)據(jù)		2.2 刪除redis數(shù)據(jù)
假設(shè)現(xiàn)在并發(fā)存在一個(gè)查詢請(qǐng)求
請(qǐng)求三:3.1查詢r(jià)edis中數(shù)據(jù)   3.2查詢數(shù)據(jù)庫數(shù)據(jù)    3.3 新查到的數(shù)據(jù)寫入redis
(一定要理解帶redis的查詢請(qǐng)求實(shí)現(xiàn)邏輯,先查redis,數(shù)據(jù)不存在查數(shù)據(jù)庫,
			查到的數(shù)據(jù)寫入redis以便以后的查詢不去直接查數(shù)據(jù)庫)
此時(shí)并發(fā)情況下就會(huì)存在1.1 ---> 1.2 ---> 3.1 ---> 3.2 ---> 2.1 ---> 2.2 ---> 3.3的情況 
此時(shí)存在的問題就是:
	此時(shí)數(shù)據(jù)庫中的數(shù)據(jù)保存的是2.1修改后的數(shù)據(jù),而redis中保存的數(shù)據(jù)是3.2中在1.1修改數(shù)據(jù)后的結(jié)果,
	此時(shí)出現(xiàn)了redis中數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù)不一致的情況,在后面的查詢過程中就會(huì)長(zhǎng)時(shí)間去先查redis,
	從而出現(xiàn)查詢到的數(shù)據(jù)并不是數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)的嚴(yán)重問題。

3,上面刨析到了單刪策略來解決redis數(shù)據(jù)一致性存在的問題,下面我們來說雙刪策略

上面的單刪策略存在問題的情況如下:
請(qǐng)求一:1.1修改數(shù)據(jù)庫數(shù)據(jù)		1.2 刪除redis數(shù)據(jù)
請(qǐng)求二:2.1修改數(shù)據(jù)庫數(shù)據(jù)		2.2 刪除redis數(shù)據(jù)
請(qǐng)求三:3.1查詢r(jià)edis中數(shù)據(jù)   3.2查詢數(shù)據(jù)庫數(shù)據(jù)    3.3 新查到的數(shù)據(jù)寫入redis
添加延時(shí)雙刪策略后的情況
請(qǐng)求一:1.1修改數(shù)據(jù)庫數(shù)據(jù)		1.2 刪除redis數(shù)據(jù)    1.3 延時(shí)3--5s再去刪除redis中數(shù)據(jù)
請(qǐng)求二:2.1修改數(shù)據(jù)庫數(shù)據(jù)		2.2 刪除redis數(shù)據(jù)    2.3 延時(shí)3--5s再去刪除redis中數(shù)據(jù)
請(qǐng)求三:3.1查詢r(jià)edis中數(shù)據(jù)     3.2 查詢數(shù)據(jù)庫數(shù)據(jù)    3.3 新查到的數(shù)據(jù)寫入redis
雙刪策略為什么能解決問題:
因?yàn)榇嬖诹搜訒r(shí)時(shí)間,故1.3或2.3 一定是最后執(zhí)行的一步操作(并發(fā)中的延時(shí)一定要理解)
延時(shí)的根本目的就是為了讓程序先把3.3執(zhí)行完,再去刪除redis

4,如何實(shí)現(xiàn)延時(shí)3–5s的操作

比較好的:   項(xiàng)目整合quartz等定時(shí)任務(wù)框架,去實(shí)現(xiàn)延時(shí)3--5s再去執(zhí)行最后一步任務(wù)
比較一般的:  創(chuàng)建線程池,線程池中拿一個(gè)線程,線程體中延時(shí)3-5s再去執(zhí)行最后一步任務(wù)(不能忘了啟動(dòng)線程)
比較差的:   單獨(dú)創(chuàng)建一個(gè)線程去實(shí)現(xiàn)延時(shí)執(zhí)行

到此這篇關(guān)于redis數(shù)據(jù)一致性之延時(shí)雙刪詳解的文章就介紹到這了,更多相關(guān)redis延時(shí)雙刪內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Redis無序集合如何實(shí)現(xiàn)禁止多端登錄功能

    基于Redis無序集合如何實(shí)現(xiàn)禁止多端登錄功能

    這篇文章主要給你大家介紹了關(guān)于基于Redis無序集合如何實(shí)現(xiàn)禁止多端登錄功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 異步redis隊(duì)列實(shí)現(xiàn) 數(shù)據(jù)入庫的方法

    異步redis隊(duì)列實(shí)現(xiàn) 數(shù)據(jù)入庫的方法

    今天小編就為大家分享一篇異步redis隊(duì)列實(shí)現(xiàn) 數(shù)據(jù)入庫的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Redis中不同持久化方式的差異對(duì)比

    Redis中不同持久化方式的差異對(duì)比

    大家應(yīng)該都知道,Redis持久化方式主要有兩種:RDB(Redis DataBase)和AOF(Append-only file),但是他們各自存儲(chǔ)了什么內(nèi)容?有什么差異呢?今天我來給大家做個(gè)小試驗(yàn),需要的朋友可以參考下
    2024-03-03
  • 5分鐘搭建redis集群(redis5.0.5)

    5分鐘搭建redis集群(redis5.0.5)

    本文主要介紹了5分鐘搭建redis集群,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 基于Redis+Lua腳本實(shí)現(xiàn)分布式限流組件封裝的方法

    基于Redis+Lua腳本實(shí)現(xiàn)分布式限流組件封裝的方法

    這篇文章主要介紹了基于Redis+Lua腳本實(shí)現(xiàn)分布式限流組件封裝,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Redis緩存lettuce更換為Jedis的實(shí)現(xiàn)步驟

    Redis緩存lettuce更換為Jedis的實(shí)現(xiàn)步驟

    在springboot中引入spring-boot-starter-data-redis依賴時(shí),默認(rèn)使用的是lettuce,如果不想使用lettuce而是使用Jedis連接池,本文主要介紹了Redis緩存lettuce更換為Jedis的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2024-08-08
  • SpringMVC集成redis配置的多種實(shí)現(xiàn)方法

    SpringMVC集成redis配置的多種實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringMVC集成redis配置的多種實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Redis中大Key與熱Key的解決方案

    Redis中大Key與熱Key的解決方案

    在工作中Redis已經(jīng)成為必備的一款高性能的緩存數(shù)據(jù)庫,但是在實(shí)際的使用過程中,我們常常會(huì)遇到兩個(gè)常見的問題,也就是文章標(biāo)題所說的大 key與熱 key,本文給大家介紹了Redis中大Key與熱Key的解決方案,需要的朋友可以參考下
    2024-06-06
  • 如何用redis?setNX命令來加鎖

    如何用redis?setNX命令來加鎖

    這篇文章主要介紹了如何用redis?setNX命令來加鎖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 在Redis數(shù)據(jù)庫中實(shí)現(xiàn)分布式速率限制的方法

    在Redis數(shù)據(jù)庫中實(shí)現(xiàn)分布式速率限制的方法

    這篇文章主要介紹了在Redis數(shù)據(jù)庫中實(shí)現(xiàn)分布式速率限制的方法,文中展示了一個(gè)用Python編寫的應(yīng)用示例,需要的朋友可以參考下
    2015-06-06

最新評(píng)論