最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis的主從同步與對(duì)象模型詳解

 更新時(shí)間:2026年03月27日 09:50:28   作者:FL4m3Y4n  
本文介紹了Redis的內(nèi)存管理機(jī)制、淘汰策略、以及持久化方法,包括RDB、AOF和混合持久化等,同時(shí),還討論了Redis的主從復(fù)制、集群配置以及高可用性方案,感興趣的朋友跟隨小編一起看看吧

淘汰策略

當(dāng)內(nèi)存達(dá)到max_memory(在redis.conf中進(jìn)行配置,主機(jī)內(nèi)存96G,則設(shè)置為48G,因?yàn)槌志没枰猣ork一份當(dāng)前redis的快照)
首先明確淘汰策略并不會(huì)檢測(cè)value內(nèi)部的key,也即list的element,hash的field這些。

時(shí)限key中淘汰

淘汰策略意義
volatile-lru最長(zhǎng)時(shí)間沒(méi)有使用
volatile-lfu最少次數(shù)使用 或 隨機(jī)采樣
volatile-ttl最近要過(guò)期
volatile-random隨機(jī)

所有key中淘汰

淘汰策略意義
allkeys-lru最長(zhǎng)時(shí)間沒(méi)有使用
allkeys-lfu最少次數(shù)使用 或 隨機(jī)采樣
volatile-random隨機(jī)

禁止淘汰(默認(rèn))

指令返回錯(cuò)誤

持久化

redis是一個(gè)內(nèi)存數(shù)據(jù)庫(kù),所有的數(shù)據(jù)儲(chǔ)存在內(nèi)存中,雖然訪問(wèn)速度快但是易丟失。默認(rèn)開(kāi)啟rdb持久化
fopen fwrite setbuf fflush fsync fclose
fwrite只是把buffer中的數(shù)據(jù)寫(xiě)到用戶態(tài)緩沖區(qū)中,內(nèi)核并不知情
fflush把fd對(duì)應(yīng)的用戶態(tài)緩沖區(qū)內(nèi)部數(shù)據(jù)移動(dòng)到page cache(高速緩存)
不調(diào)用fsync,數(shù)據(jù)也會(huì)到文件中,只不過(guò)不知道何時(shí),通過(guò)LRU把page cache中的數(shù)據(jù)淘汰到file中。

機(jī)器斷電,丟失1,2的數(shù)據(jù)
進(jìn)程關(guān)閉,丟失1的數(shù)據(jù)
fork寫(xiě)時(shí)復(fù)制:子進(jìn)程和父進(jìn)程映射同一塊物理內(nèi)存。
父進(jìn)程復(fù)制一塊虛擬內(nèi)存頁(yè)表給子進(jìn)程,同時(shí)二者設(shè)置為可讀,二者虛擬內(nèi)存映射到同一塊物理頁(yè)。只有其中的任意一個(gè)進(jìn)程試圖修改一個(gè)共享的只讀物理頁(yè)面時(shí)(例如,修改一個(gè)全局變量或在堆上分配新內(nèi)存),才會(huì)寫(xiě)保護(hù)中斷觸發(fā),物理頁(yè)復(fù)制,誰(shuí)修改,誰(shuí)指向新的,把只讀狀態(tài)修改為可讀可寫(xiě)狀態(tài)。

利用fork進(jìn)程 的功能給父進(jìn)程的內(nèi)存打了快照。
在維持了redis對(duì)外服務(wù)能力的基礎(chǔ)上,對(duì)redis數(shù)據(jù)做了一次保存。

aof

通過(guò)追加寫(xiě)日志到buffer的方式進(jìn)行持久化。順序磁盤(pán)io≈內(nèi)存隨機(jī)io
但是會(huì)有數(shù)據(jù)冗余的情況,多條set只有最后一條set是有效的。
aof的策略:
①always 一旦有對(duì)redis的修改就要落盤(pán)
②every_sec (bio_fsync_aof)每秒鐘進(jìn)行一次落盤(pán)
③no buffer的數(shù)據(jù)到page cache(見(jiàn)上)

aof-rewrite
fork一份子進(jìn)程,只保存redis內(nèi)存當(dāng)前的狀態(tài),根據(jù)內(nèi)存數(shù)據(jù)狀態(tài)生成aof文件,避免同一個(gè)key的歷史冗余。在重寫(xiě)aof期間,對(duì)redis所有的寫(xiě)操作記錄到重寫(xiě)緩沖區(qū),當(dāng)重寫(xiě)結(jié)束后,附加到aof文件末尾。

rdb

通過(guò)fork子進(jìn)程進(jìn)行持久化,基于內(nèi)存中的數(shù)據(jù)進(jìn)行持久化。但是缺點(diǎn)是rdb不能看到兩次rdb之間數(shù)據(jù)的修改。
rdb-aof混合持久化
在rdb持久化期間,對(duì)redis的寫(xiě)操作記錄到重寫(xiě)緩沖區(qū),rdb持久化建立后,附加到aof文件末尾

redis持久化相關(guān)配置

在redis.conf中完成配置

######### aof #########
# redis.cnf
appendonly no
appendfilename "appendonly.aof"
# aof read write  invert
# appendfsync always
appendfsync everysec
# appendfsync no
# auto-aof-rewrite-percentage 為 0 則關(guān)閉 aof 復(fù)寫(xiě)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# yes 如果 aof 數(shù)據(jù)不完整,盡量讀取最多的格式正確的數(shù)據(jù);
# no 如果 aof 數(shù)據(jù)不完整 報(bào)錯(cuò),可以通過(guò) redis-check-aof 來(lái)修復(fù) aof 文件;
aof-load-truncated yes
# 開(kāi)啟混合持久化
aof-use-rdb-preamble yes
######### rdb #########
# save ""
# save 3600 1
# save 300 100
# save 60 10000

aof

# 開(kāi)啟 aof
appendonly yes
# 關(guān)閉 aof復(fù)寫(xiě)
auto-aof-rewrite-percentage 0
# 關(guān)閉 混合持久化
aof-use-rdb-preamble no
# 關(guān)閉 rdb
save ""
# 1. 每條命令刷盤(pán) redis 事務(wù)才具備持久性
# appendfsync always
# 2. 每秒刷盤(pán)
appendfsync everysec
# 3. 交由系統(tǒng)刷盤(pán)
# appendfsync no

aof-fwrite

# 開(kāi)啟 aof
appendonly yes
# 開(kāi)啟 aof復(fù)寫(xiě)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 關(guān)閉 混合持久化
aof-use-rdb-preamble no
# 關(guān)閉 rdb
save ""
# 1. redis 記錄上次aof復(fù)寫(xiě)時(shí)的size,如果之后累計(jì)超過(guò)了原來(lái)的size,則會(huì)發(fā)生aof復(fù)寫(xiě);
auto-aof-rewrite-percentage 100
# 2. 為了避免策略1中,小數(shù)據(jù)量時(shí)產(chǎn)生多次發(fā)生aof復(fù)寫(xiě),策略2在滿足策略1的前提下需要超過(guò) 64mb 才會(huì)發(fā)生aof復(fù)寫(xiě);
auto-aof-rewrite-min-size 64mb

rdb

# 關(guān)閉 aof 同時(shí)也關(guān)閉了 aof復(fù)寫(xiě)
appendonly no
# 關(guān)閉 aof復(fù)寫(xiě)
auto-aof-rewrite-percentage 0
# 關(guān)閉 混合持久化
aof-use-rdb-preamble no
# 開(kāi)啟 rdb 也就是注釋 save ""
# save ""
save 3600 1
save 300 100
save 60 10000
# redis 默認(rèn)策略如下;
# 注意;寫(xiě)了多個(gè) save 策略,只需要滿足一個(gè)則開(kāi)啟rdb持久化
# 3600 秒內(nèi)有以1次修改
save 3600 1
# 300 秒內(nèi)有100次修改
save 300 100
# 60 秒內(nèi)有10000次修改
save 60 10000

rdb-aof混合持久化

# 開(kāi)啟 aof
appendonly yes
# 開(kāi)啟 aof復(fù)寫(xiě)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 開(kāi)啟 混合持久化
aof-use-rdb-preamble yes
# 關(guān)閉 rdb
save ""

redis持久化方案的優(yōu)缺點(diǎn)

特性AOF (Append Only File)RDB (Redis Database Snapshot)
優(yōu)點(diǎn)數(shù)據(jù)可靠,丟失較少
持久化過(guò)程代價(jià)較低
RDB 文件小
數(shù)據(jù)恢復(fù)快
缺點(diǎn)AOF 文件過(guò)大
數(shù)據(jù)恢復(fù)慢
數(shù)據(jù)丟失較多
持久化過(guò)程代價(jià)較高(fork子進(jìn)程實(shí)現(xiàn))

高可用:Redis主從復(fù)制數(shù)據(jù)備份+主從切換機(jī)制-在幾秒鐘內(nèi)得到合理答案

主要用來(lái)實(shí)現(xiàn)redis數(shù)據(jù)的可靠性;防止redis所在的磁盤(pán)損壞,造成數(shù)據(jù)永久丟失;
redis主從間采用異步復(fù)制的方式;異步復(fù)制優(yōu)點(diǎn)高效,缺點(diǎn)是只能保證最終一致?,F(xiàn)代分布式系統(tǒng)都是半數(shù)一致性。

#redis.conf
replicaof 127.0.0.1 7002
info replication

主從切換

哨兵模式
只保證一個(gè)節(jié)點(diǎn)的可用性

redis-cluster集群

多個(gè)中心節(jié)點(diǎn)對(duì)外提供服務(wù)。

問(wèn)題:向其中一個(gè)主節(jié)點(diǎn)寫(xiě)入數(shù)據(jù)時(shí),怎么保證數(shù)據(jù)均衡地落到其他主節(jié)點(diǎn)
關(guān)注分布式一致性hash
配置redis-cluster集群

https://github.com/0voice

到此這篇關(guān)于redis的主從同步與對(duì)象模型的文章就介紹到這了,更多相關(guān)redis主從同步與對(duì)象模型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python利用redis限制用戶重復(fù)刷新帶來(lái)的數(shù)據(jù)問(wèn)題

    Python利用redis限制用戶重復(fù)刷新帶來(lái)的數(shù)據(jù)問(wèn)題

    在網(wǎng)站開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要控制用戶重復(fù)刷新頁(yè)面的情況,本文就來(lái)介紹了Python利用redis限制用戶重復(fù)刷新帶來(lái)的數(shù)據(jù)問(wèn)題,感興趣的可以了解一下
    2024-03-03
  • redis 解決key的亂碼問(wèn)題,并清理詳解

    redis 解決key的亂碼問(wèn)題,并清理詳解

    這篇文章主要介紹了redis 解決key的亂碼問(wèn)題,并清理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn)好友關(guān)注功能

    微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn)好友關(guān)注功能

    這篇文章主要介紹了微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn) 好友關(guān)注,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Redis內(nèi)存碎片率調(diào)優(yōu)處理方式

    Redis內(nèi)存碎片率調(diào)優(yōu)處理方式

    Redis集群因內(nèi)存碎片率超過(guò)1.5觸發(fā)告警,分析發(fā)現(xiàn)內(nèi)因與外因?qū)е聝?nèi)存碎片,內(nèi)因?yàn)椴僮飨到y(tǒng)內(nèi)存分配機(jī)制,外因?yàn)镽edis操作特性,使用Redis內(nèi)置內(nèi)存碎片清理機(jī)制可有效降低碎片率,但需注意可能影響性能,建議使用MEMORY命令診斷內(nèi)存使用情況,合理配置參數(shù)以優(yōu)化性能
    2024-09-09
  • Redis中key過(guò)期策略的實(shí)現(xiàn)

    Redis中key過(guò)期策略的實(shí)現(xiàn)

    Key的過(guò)期機(jī)制是Redis保持高可用性的重要策略,過(guò)期策略分為惰性過(guò)期和定期過(guò)期,惰性過(guò)期在每次訪問(wèn)key時(shí)檢查是否過(guò)期,定期過(guò)期則由serverCron方法定時(shí)清理過(guò)期key,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-09-09
  • redis群集簡(jiǎn)單部署過(guò)程

    redis群集簡(jiǎn)單部署過(guò)程

    文章介紹了Redis,一個(gè)高性能的鍵值存儲(chǔ)系統(tǒng),其支持多種數(shù)據(jù)結(jié)構(gòu)和命令,它還討論了Redis的服務(wù)器端架構(gòu)、數(shù)據(jù)存儲(chǔ)和獲取、協(xié)議和命令、高可用性方案、緩存機(jī)制以及監(jiān)控和日志功能,文章還提供了一個(gè)部署Redis群集的簡(jiǎn)要指南,感興趣的朋友一起看看吧
    2025-02-02
  • Redis之Set和Zset使用及說(shuō)明

    Redis之Set和Zset使用及說(shuō)明

    文章介紹了Redis集合和有序集合的相關(guān)命令,包括添加、查詢、修改、刪除元素,集合間的交集、并集、差集操作,以及數(shù)據(jù)庫(kù)管理操作,強(qiáng)調(diào)了在實(shí)際開(kāi)發(fā)中合理使用這些功能的重要性
    2026-03-03
  • 淺談Redis處理接口冪等性的兩種方案

    淺談Redis處理接口冪等性的兩種方案

    本文主要介紹了淺談Redis處理接口冪等性的兩種方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Redis遠(yuǎn)程連接Redis客戶端的實(shí)現(xiàn)步驟

    Redis遠(yuǎn)程連接Redis客戶端的實(shí)現(xiàn)步驟

    本文主要介紹了Redis遠(yuǎn)程連接Redis客戶端的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Redis保證數(shù)據(jù)不丟失的兩種方法

    Redis保證數(shù)據(jù)不丟失的兩種方法

    Redis 實(shí)現(xiàn)數(shù)據(jù)不丟失的關(guān)鍵在于使用了多種持久化機(jī)制,以確保數(shù)據(jù)在內(nèi)存和磁盤(pán)之間的持久性,本文給大家介紹了Redis保證數(shù)據(jù)不丟失的兩種方法,持久化和集群運(yùn)行,我們分別來(lái)看它們兩的具體實(shí)現(xiàn)細(xì)節(jié),感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-11-11

最新評(píng)論

永仁县| 上虞市| 三台县| 麻阳| 丰台区| 湖南省| 沙田区| 威海市| 汉中市| 万全县| 黑河市| 三门县| 揭东县| 通渭县| 哈巴河县| 华安县| 治县。| 高密市| 德安县| 上饶市| 滨州市| 德保县| 湘潭市| 成安县| 托克逊县| 辽阳县| 大同市| 彭水| 门源| 永德县| 镇巴县| 孙吴县| 通山县| 手机| 平安县| 双流县| 鄂伦春自治旗| 阳西县| 海门市| 仁寿县| 杭锦后旗|