国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

聊一聊Redis持久化開與關

開發 項目管理 Redis
Redis的持久化功能被夸大和誤解了,這個問題我解釋過無數遍了,早就想寫個說明了,今天“忍不了”,和大家聊聊我的一些認知,歡迎大佬們吐槽。

本文轉載自微信公眾號「Redis開發運維實戰」,作者付磊 。轉載本文請聯系Redis開發運維實戰公眾號。

經常能碰到這樣的問題:

  1. A: Redis開持久化了嗎? 
  2. B: 沒有 
  3. A: 你們為什么不開?數據丟了怎么辦?數據不一致怎么辦? 

Redis的持久化功能被夸大和誤解了,這個問題我解釋過無數遍了,早就想寫個說明了,今天“忍不了”,和大家聊聊我的一些認知,歡迎大佬們吐槽。

一、Redis”3“種持久化方式

1. RDB

簡單來說,對Redis做一個快照(利用fork)保存在磁盤上

(1) 優點:

  • 結構緊湊體積小,加載速度快(相比AOF)
  • 可以做定期備份:例如低峰期(順便搞個數據分析也行)

(2) 缺點:

  • 動作大、消耗大:全量操作對于磁盤、CPU、內存等均有消耗
  • 無法做到"實時"備份
  • 格式多變(Redis 3 4 5 6版本多次修改)

2. AOF

簡單說把Redis的每條寫操作記錄到日志中,例如set hello world

  1. *3 
  2. $3 
  3. set 
  4. $5 
  5. hello 
  6. $5 
  7. world 

簡單說,落盤策略有三種:

  1. appendfsync always:每次事件循環都進行一次同步操作(主線程) 
  2. appendfsync everysec:每秒進行一次同步操作(另一個線程) 
  3. appendfsync no:由操作系統控制同步操作(操作系統) 

(1) 優點:

  • RESP標準格式:無版本兼容性問題
  • 實時性更高且成本較小

(2) 缺點:

  • 體積大:協議 + 明文
  • 加載慢:利用fakeclient做回放
  • AOF重寫還是動作不小(本文不討論AOF重寫)

3. RDB-AOF混合

持久化文件全量使用RDB,增量使用AOF,保證體積、實時性、加載速度。(Redis 4提供,本文不討論)

二、開AOF性能會差多少?(注:AOF重寫也是資源消耗大頭,這里不討論)

1.測試環境:

  • CPU: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz
  • 機械磁盤
  • Redis版本:4.0.14(未測試Redis 6多線程)
  • 壓測工具:redis-benchmark
  • AOF策略:appendfsync everysec

2.壓測方法:

測試Redis在”開和關“AOF情況下,在不同size(64字節、128字節、512字節)的OPS和耗時

(1) d=64字節

命令 ops(開AOF) ops(關AOF) 耗時(開AOF) 耗時(關AOF)
set 97352 121624 100.00% <= 0 milliseconds(總:5.14s) 100.00% <= 0 milliseconds(總:4.11s)
get 108979 109241 100.00% <= 0 milliseconds(總:4.59s) 100.00% <= 0 milliseconds(總:4.58s)
incr 104755 113301 100.00% <= 0 milliseconds(總:4.77s) 100.00% <= 0 milliseconds(總:4.41s)
lpush 95347 110889 100.00% <= 0 milliseconds(總:5.24s) 100.00% <= 0 milliseconds(總:4.51s)
hset 97770 113791 100.00% <= 0 milliseconds(總:5.11s) 100.00% <= 0 milliseconds(總:4.39s)

(2) d=128字節

命令 ops(開AOF) ops(關AOF) 耗時(開AOF) 耗時(關AOF)
set 108908 114077 100.00% <= 1 milliseconds
100.00% <= 2 milliseconds
(總:4.59s)
100.00% <= 0 milliseconds(總:4.38s)
get 107388 111756 100.00% <= 1 milliseconds(總:4.66s) 100.00% <= 0 milliseconds(總:4.47s)
incr 105042 113430 100.00% <= 0 milliseconds(總:4.76s) 100.00% <= 0 milliseconds(總:4.41s)
lpush 103114 114025 100.00% <= 0 milliseconds(總:4.85s) 100.00% <= 0 milliseconds(總:4.39s)
hset 101440 113791 100.00% <= 1 milliseconds(總:4.93s) 100.00% <= 1 milliseconds(總:4.93s)

(3) d=512字節

命令 ops(開AOF) ops(關AOF) 耗時(開AOF) 耗時(關AOF)
set 96581 108790 99.99% <= 1 milliseconds
99.99% <= 2 milliseconds
99.99% <= 3 milliseconds
99.99% <= 5 milliseconds
100.00% <= 6 milliseconds
100.00% <= 7 milliseconds
100.00% <= 8 milliseconds
100.00% <= 8 milliseconds
(總:5.18s)
100.00% <= 1 milliseconds(總:4.60s)
get 107898 105374 100.00% <= 0 milliseconds(總:4.63s) 100.00% <= 0 milliseconds(總:4.74s)
incr 102438 107991 100.00% <= 0 milliseconds(總:4.88s) 100.00% <= 0 milliseconds(總:4.63s)
lpush 93231 105064 99.98% <= 2 milliseconds
99.98% <= 3 milliseconds
99.99% <= 4 milliseconds
99.99% <= 5 milliseconds
99.99% <= 6 milliseconds
100.00% <= 7 milliseconds
100.00% <= 8 milliseconds
100.00% <= 8 milliseconds
(總:5.36s)
100.00% <= 0 milliseconds(總:4.76s)
hset 96955 108225 100.00% <= 6 milliseconds
100.00% <= 8 milliseconds
100.00% <= 9 milliseconds
100.00% <= 9 milliseconds
(總:5.16s)
100.00% <= 0 milliseconds(總:4.62s)

3. 總結說明:(注意此處沒有考慮AOF重寫,只能更差)

(1) 開啟AOF后,Redis的寫性能下降了8~25%,讀性能未下降(注意此處測試為非讀寫混合場景)

(2) 開啟AOF后,隨著數據量的增加相關讀寫性能會下降。

(3) 開啟AOF后,實際測試中發現單核CPU也會少量上漲。

三、一些問題的討論?

1. aof刷盤策略改為always能保證不丟數據嗎?

(1) 答案

會丟。Redis執行一條寫入命令時,會將數據寫入aof_buf,但寫入aof_buf和刷盤還是存在一次事件時間差。

(2) 原理:

Redis處理命令(server.c)processCommand->call(執行命令),其中包含

  1. void propagate(struct redisCommand *cmd, int dbid, robj **argv, int argc, int flags) 
  2.    //寫入到aof_buf中 
  3.     if (server.aof_state != AOF_OFF && flags & PROPAGATE_AOF) 
  4.         feedAppendOnlyFile(cmd,dbid,argv,argc); 
  5.     ...... 

每次文件事件前的beforesleep(ae.c)

  1. void aeMain(aeEventLoop *eventLoop) { 
  2.     eventLoop->stop = 0; 
  3.     while (!eventLoop->stop) { 
  4.         if (eventLoop->beforesleep != NULL
  5.             eventLoop->beforesleep(eventLoop); 
  6.         aeProcessEvents(eventLoop, AE_ALL_EVENTS|AE_CALL_AFTER_SLEEP); 
  7.     } 

其中beforesleep包含了aof_buf落盤(server.c)

  1. void beforeSleep(struct aeEventLoop *eventLoop) { 
  2.   ...... 
  3.    //aof落盤 
  4.     flushAppendOnlyFile(0); 
  5.     ...... 

flushAppendOnlyFile利用操作系統的write和fsync(加上aof的三種策略)完成落盤:

2.Redis是什么一致性?

最終一致性。客戶端寫主后,不等從寫完。(為什么這樣?Redis設計目標是什么?快!)

3.master節點故障后Redis怎么恢復?

(1) 關閉AOF:B節點晉升成主節點,對外提供服務。A節點恢復后變為slave,依賴全量復制獲取全部數據

(2) 開啟AOF:同上...(只不過A節點全量復制后做一次AOF重寫)

所以看起來此模式下,對于故障恢復持久化沒什么用!

4.我就不想丟理論上最少的數據,怎么辦?

開啟always,不用主從切換,等待A節點恢復,重新加載AOF在提供服務,老哥這個現實嗎???

五、最佳實踐?

1.RDB最佳

(1) 自動save:關、關、關(性能殺手)

(2) save命令:同步,忘記它(除非你一點內存沒有了,還需要RDB)

(3) bgsave命令:備份可以用,請關注fork時間(info stats可查)

(4) 關閉掉:做不到,因為全量復制默認會用。

2.AOF最佳

(1) always不要用(主線程執行、以及IO影響)

(2) everysec、no按需使用,如果僅僅想不丟數據,AOF做不到。

(3) 除非怕主從都掛了,可以考慮。

不要忘記AOF臭名昭著的:

  1. Asynchronous AOF fsync is taking too long (disk is busy). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis 

3.單機多實例:你玩得起嗎?

以一個80 core,500G內存的機器為例子,出于成本考慮至少要部署80~90個* memory(5G)的實例。在此場景下CPU、內存、網絡的開銷基本還能控制,但如果開了AOF,用普通的磁盤,行不行?

  1. 會有:很多公司會為了做持久化,預留“一半”內存,所以就是40~45個 
  2.  
  3. 還有:用SSD解決AOF的問題。 

4. "旁門左道"用法

(1) RDB:

定期備份(例如低峰期)、數據分析(分析出bigkey、hotkey、idlekey等)(阿里云的做法)

(2) AOF

原生AOF語義太弱,如果想做類似binlog功能可以對Redis內核進行修改,多機房同步會用上。

六、總結

Redis的持久化功能是一個重要功能,但如果想指望它實現“不丟數據”、“一致性”,那可能帶來的就是:低性能、高成本。

有時間整理下Redis3~6 AOF的一些變化,附圖一張:繼續搬磚去了(現在實例已經130萬了。。)

 

責任編輯:武曉燕 來源: Redis開發運維實戰
相關推薦

2022-08-30 10:15:27

Kubernetes數據持久化管理

2022-03-08 16:10:38

Redis事務機制

2022-05-12 23:19:15

Redis內存碎片處理

2023-03-06 21:23:23

Redis數據庫

2020-04-24 09:53:59

Go協作搶占

2022-05-18 16:35:43

Redis內存運維

2022-03-31 10:41:35

iOS應用提審發布

2018-03-23 10:30:56

微網關服務嚙合微服務

2021-09-15 14:52:43

數字貨幣傳銷虛擬貨幣

2023-09-27 09:04:50

2021-03-10 00:02:01

Redis

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2021-01-28 22:31:33

分組密碼算法

2018-06-07 13:17:12

契約測試單元測試API測試

2022-11-01 08:46:20

責任鏈模式對象

2021-01-29 08:32:21

數據結構數組

2023-05-15 08:38:58

模板方法模式

2021-08-04 09:32:05

Typescript 技巧Partial

2018-11-29 09:13:47

CPU中斷控制器
點贊
收藏

51CTO技術棧公眾號

午夜激情综合网| 亚洲精品欧美二区三区中文字幕| 精品国产在天天线2019| 日韩中文字幕精品| 国产精品高清在线| 亚洲综合中文字幕在线| 蜜桃臀av在线| 另类亚洲自拍| 国产一区二区三区国产| 国产精品亚洲第一| 欧美视频在线一区| 国产精品欧美激情| 91cn在线观看| 4hu四虎永久在线影院成人| 五十路熟女丰满大屁股| 日韩高清欧美激情| 国产精品无av码在线观看| 国产原创视频在线观看| 国产欧美精品一区二区三区四区 | 国产精品久久91| 日本片在线看| 成人在线免费观看黄色| 无吗不卡中文字幕| 宅男噜噜噜66国产免费观看| 婷婷另类小说| 国产成人精品久久二区二区| 麻豆传媒在线观看| 91在线视频播放| 成人网在线观看| 成人1区2区| 一区二区不卡在线播放 | 欧美日韩国产精品专区| 国产91在线亚洲| 精品1区2区3区4区| 97久久精品国产| 三级欧美韩日大片在线看| 国产911在线观看| 国产婷婷色一区二区三区| 免费看涩涩视频| 成人激情黄色小说| 美女黄毛**国产精品啪啪| 一本一本久久| 99re在线国产| 久久久久免费av| 亚洲免费在线观看| 中文字幕一区二区三区四区在线视频| 激情图片小说一区| 成人午夜精品久久久久久久蜜臀| 亚洲精选成人| 国产精品入口免费| 日韩午夜av| 国产精品嫩草视频| 在线观看一区视频| 无码无遮挡又大又爽又黄的视频| 狠狠网亚洲精品| 色播五月综合网| 国产精品久久久久一区二区三区共| 蜜桃麻豆91| 国产精品羞羞答答xxdd| 中文字幕永久视频| 亚洲综合成人在线| 久操免费在线| 亚欧洲精品视频在线观看| 91麻豆精品久久久久蜜臀 | 99综合电影在线视频| 美女少妇一区二区| 久久网站最新地址| 日韩久久一区| 一区二区三区视频在线播放| 99re视频精品| 午夜国产一区二区三区| 亚洲国产一区二区在线播放| 五月天丁香婷| 欧美日韩国产天堂| 成人国产精品入口免费视频| 蜜臀久久99精品久久久无需会员 | 精品一区二区三区在线观看| 欧美黄色免费影院| 亚洲人在线视频| 国产精品videosex性欧美| 日韩视频在线免费播放| 99视频一区二区| 一二三区高清| 欧美华人在线视频| 在线观看视频日韩| ·天天天天操| 中文字幕国产亚洲2019| 在线国产欧美| 国产精品实拍| 国产成人精品午夜| av电影天堂一区二区在线观看| 捆绑紧缚一区二区三区在线观看| 日韩一区二区高清| 日韩mv欧美mv国产网站| 国产精品对白刺激| 中文字幕一区二区三区不卡在线| 欧洲一区二区三区精品| 国产嫩草一区二区三区在线观看| 99久久精品情趣| 99久热这里只有精品视频免费观看| 欧美成人综合一区| 亚洲成a人在线观看| 精品国产一区二区三区av片| 阿v天堂2018| 国产一区二区三区在线看| 亚洲精品社区| a级片国产精品自在拍在线播放| 久久久久久高清| 日韩视频免费| 国产一线二线在线观看| 九九热只有这里有精品| 欧美视频在线观看| 在线中文字幕第一页| 国产在线不卡精品| 黑人狂躁日本妞一区二区三区 | 亚洲xxxx3d| 亚洲视频在线播放| 色欧美片视频在线观看 | 久久久久久久久综合| 在线免费不卡视频| 久久―日本道色综合久久| 在线成人直播| 国产精品日韩精品中文字幕| www.亚洲资源| 亚洲精品永久www嫩草| 欧美亚洲国产日韩2020| 欧美大片拔萝卜| 欧美色图在线视频| 久久综合狠狠综合| 国产精品综合视频| 国产精品一区二区x88av| 国产欧美另类| 欧美久久99| 伊人久久大香线蕉综合网站| 亚洲羞羞网站| 免费不卡视频| 日本动漫同人动漫在线观看| 免费不卡av| 精品久久99| www.日韩| 红杏aⅴ成人免费视频| 欧美人成在线观看ccc36| 亚洲第一se情网站| 亚洲精品无码专区在线播放| 麻豆影视在线观看| 中文字幕在线观看第一页| 成人女人a毛片在线看| 快色在线观看| 男生女生差差差的视频在线观看| 日本免费视频| a中文在线播放| 亚洲黄色中文字幕| 亚洲日韩中文字幕一区| 无码专区aaaaaa免费视频| 欧美 日韩 国产在线观看| 黄色网页免费在线观看| 欧美激情精品久久久久久小说| 熟妇人妻无乱码中文字幕真矢织江| 国产精品wwwww| y4480在线8影院| 国产人成网在线播放va免费| 天堂av中文在线观看| 亚洲激情国产| 亚欧洲精品视频在线观看| 99视频入口| 欧美一区2区三区4区公司二百| 亚洲欧美制服中文字幕| 色综合久久九月婷婷色综合| 国产精品1024久久| 宅男噜噜噜66国产精品免费| 欧美在线观看在线观看| 成人黄色电影网址| 日本免费成人网| 视频一区二区在线观看| 国产精品99久久久久久久久久久久 | 日本欧美黄网站| 日产精品一线二线三线芒果| 亚洲区成人777777精品| 白天操夜夜操| 成本人h片动漫网站在线观看| 丁香花在线电影小说观看| 日韩毛片免费看| 免费不卡在线观看| 国产综合色视频| 欧美性猛交xxxxx水多| 欧美日韩国产123| 欧美久久综合性欧美| 日本在线中文电影| 99tv成人影院| 成人97人人超碰人人99| 日韩欧美视频一区二区三区| www.日韩欧美| 精品日韩在线播放| 青青草原av在线| 水野朝阳av一区二区三区| 欧美视频中文在线看| 欧美寡妇偷汉性猛交| 黄页网站大全在线观看| 777电影在线观看| 极品av少妇一区二区|