成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Redis6的持久化配置,你知道多少?

存儲 存儲軟件 Redis
我們都知道Redis是一個基于內存的數據庫,如果沒有給Redis配置持久化的話,每當重啟后Redis的數據就會全部丟失,會很麻煩。因此Redis需要開啟持久化功能,將數據保存到磁盤上,當Redis重啟后可以在磁盤中恢復數據。這樣緩存數據就不容易丟失了。

本文轉載自微信公眾號「零零后程序員小三」,作者003 。轉載本文請聯系零零后程序員小三公眾號。

 本文是對Redis6的持久化配置,了解什么是AOF和RDB,它們的優缺點是什么,該如何使用。

什么是Redis持久化?

我們都知道Redis是一個基于內存的數據庫,如果沒有給Redis配置持久化的話,每當重啟后Redis的數據就會全部丟失,會很麻煩。因此Redis需要開啟持久化功能,將數據保存到磁盤上,當Redis重啟后可以在磁盤中恢復數據。這樣緩存數據就不容易丟失了。

開啟持久化的兩種方式

Redis開啟持久化有兩種方式:RDB(Redis DataBase)與AOF(append only file)

RDB持久化

RDB其實就是把數據以快照的形式保存到磁盤上。什么是快照呢?你可以把快照理解成當前這一時刻的數據拍成一張照片保存下來。RDB持久化是指在指定的時間間隔內將內存中的數據集快照形式寫入磁盤。也是默認的持久化方式,這種方式就是將內存中的數據寫入到二進制文件當中,默認的文件名為dump.rdb

既然RDB機制是通過某個時刻把所有數據生成一張快照來進行保存的,那么就應該會有一種觸發機制來實現這個過程。對于RDB來說,提供了三種機制:save、bgsave、自動化。

1.save觸發方式:該命令會阻塞當前Redis服務器,執行save命令的時候,Redis不能處理其他的命令,直到RDB過程執行完成為止。執行完成的時候如果存在老的RDB文件,就會把新的替換掉舊的。

2.bgsave觸發方式:執行該命令的時候,Redis會在后臺進行異步快照操作,快照的同時還可以響應客戶端的請求,具體的操作是Redis進程執行fork操作創建了一個子進程,而RDB持久化過程由子進程負載,完成后自動結束。阻塞只發生在子進程。

3.自動化觸發:由配置文件來完成,配置觸發Redis的RDB持久化條件。

「RDB有何優缺點?」

優點:

(1)RDB文件緊湊,全量備份,比較適用于備份和災難恢復

(2)生成RDB文件的時候,Redis主進程會開啟讓一個子進程來完成所有的保存操作,主進程不需要任何的IO操作

(3)RDB在恢復大數據集的時候速度快。

缺點:

因為RDB快照是一次全量備份的,存儲的是內存數據二進制形式,在存儲上會非常的緊湊。當進行快照持久化時,會開啟一個子進程負載快照的持久化,子進程會擁有父進程的內存數據,父進程修改內存子進程不會反應出來,所有當在快照持久化時修改的數據不會得以保存,還有可能導致丟失數據。

核心配置:(dbfilename 文件名,dir持久化文件的路徑)

  1. #任何ip可以訪問 
  2. bind 0.0.0.0 
  3. #守護進程 
  4. daemonize yes 
  5. #密碼 
  6. requirepass 123456 
  7. #⽇志⽂件 
  8. logfile "/usr/local/redis/log/redis.log" 
  9. #持久化⽂件名稱 
  10. dbfilename xdclass.rdb 
  11. #持久化⽂件存儲路徑 
  12. dir /usr/local/redis/data 
  13. #持久化策略, 10秒內有個1個key改動,執⾏快照 
  14. save 10 1 
  15. ######之前配置###### 
  16. #導出rdb數據庫⽂件壓縮字符串和對象,默認是yes,會浪費 
  17. CPU但是節省空間 
  18. rdbcompression yes 
  19. # 導⼊時是否檢查 
  20. rdbchecksum yes 

RDB操作實戰

配置文件(根據自行需要配置)

  1. bind 0.0.0.0 
  2. daemonize yes 
  3. requirepass 123456Xdclass 
  4. logfile "/usr/local/redis/log/redis.log" 
  5. dbfilename xdclass.rdb 
  6. dir /usr/local/redis/data 
  7. #關閉rdb 
  8. #save "" 
  9. #10秒2個key變動則觸發rdb 
  10. save 10 2 
  11. #100秒5個key變動則觸發rdb 
  12. save 100 5 
  13. #壓縮 
  14. rdbcompression yes 
  15. #檢查 
  16. rdbchecksum yes 

備注:Linux內存分配策略,0表示內核將檢查是否有足夠的內存供應用進程所使用;如果有足夠內存則申請允許;否則申請失敗,并發錯誤返回給應用進程

1表示內核允許分配所有的物理內存,而不管當前的內存狀態如何

2表示內核允許分配超過所有物理內存和交換總和內存

  1. 解決⽅式 
  2. echo 1 > /proc/sys/vm/overcommit_memory 
  3.  
  4. 持久化配置 
  5. vim /etc/sysctl.conf 
  6.  
  7. 改為 
  8. vm.overcommit_memory=1 
  9. 修改sysctl.conf后,需要執⾏ sysctl -p 以使⽣效。 

AOF持久化

上面介紹了RDB持久化是全量備份的,但這種備份總是耗時的,有時候我們提供了一種更為高效的方式AOF,工作機制很簡單,Redis會將每一個收到的命令都通過write函數追加到文件中。通俗點理解就是像日志記錄一樣。

配置:

與RDB配置方式不一樣

  1. appendonly yes 默認為不開啟 
  2. AOF文件名通過appendfilename配置設置,默認文件名為appendonly.aof 
  3. 存儲路徑同RDB持久化方式一致,使用dir配置 
  1. bind 0.0.0.0 
  2. daemonize yes 
  3. requirepass 123456Xdclass 
  4. logfile "/usr/local/redis/log/redis.log" 
  5. dbfilename xdclass.rdb 
  6. dir /usr/local/redis/data 
  7. #save 10 2 
  8. #save 100 5 
  9. save "" 
  10. rdbcompression yes 
  11. #對rdb數據進⾏校驗,耗費CPU資源,默認為yes 
  12. rdbchecksum yes 
  13. appendonly yes 
  14. appendfilename "appendonly.aof" 
  15. appendfsync everysec 

AOF核心原理

(1)Redis每次寫入命令會追加到aof_buf緩沖區中

(2)AOF緩沖區根據對應的策略向硬盤做同步的操作

(3)高頻AOF會帶來影響,特別是每次刷盤

AOF三種觸發機制

(1)每修改同步always:同步持久化 每次發送數據更變會立即被記錄到磁盤中,性能較差但是數據保存的完整性比較好

(2)每秒同步everysec:異步操作,每秒記錄,如果一秒內宕機的話,會造成數據丟失。

(3)不同no:從不同步

AOF有何優缺點?

優點:

(1)AOF可以更好的對數據保護,不讓數據丟失。一般AOF會每隔一秒,通過后臺線程執行一次fsync操作,最多丟失一秒鐘的數據

(2)AOF日志文件沒有任何磁盤尋址的開銷,寫入性能非常高,文件也不容易損壞。

(3)AOF日志文件的命令擁有很好的可讀方式進行記錄,因為這個特征非常適合做災難性的誤刪除恢復。

缺點:

(1)對于同一份數據來說的話,AOF文件的日志通常要比RDB數據快照文件要更大。

(2)AOF開啟后,支持的寫QPS會比RDB支持的寫QPS低,因為AOF一般配置成每秒fsync一次日志文件。

AOF配置實戰

「文件重新原理」

AOF的方式也同時帶來了另一個問題。持久化文件會變得越來越大,為了壓縮aof持久化文件。Redis提供了一個barewriteaof命令。來講內存中的數據以命令的形式保存到臨時文件中,同時會開啟一條新進程來重寫,重寫aof文件的操作,并沒有讀取舊的aof文件,而是把整個內存中的數據庫內容用命令的形式重寫了一個新的aof文件,這個和快照有點類似。

重寫觸發配置

手動觸發:直接調用bgrewriteaof命令

自動觸發:auto-aof-rewrite-min-size和auto-aof-rewrite-percentage參數(auto-aof-rewrite-min-size表示AOF重寫文件最小體積,默認為64MB;auto-aof-rewrite-percentage代表AOF文件空間和上一次重寫后AOF文件空間的比值)

常用配置

  1. # 是否開啟aof 
  2. appendonly yes 
  3. # ⽂件名稱 
  4. appendfilename "appendonly.aof" 
  5. # 同步⽅式 
  6. appendfsync everysec 
  7. # aof重寫期間是否同步 
  8. no-appendfsync-on-rewrite no 
  9. # 重寫觸發配置 
  10. auto-aof-rewrite-percentage 100 
  11. auto-aof-rewrite-min-size 64mb 
  12. # 加載aof時如果有錯如何處理 
  13. # yes表示如果aof尾部⽂件出問題,寫log記錄并繼續執⾏。 
  14. no表示提示寫⼊等待修復后寫⼊ 
  15. aof-load-truncated yes 

在線上,我們到底該怎么做?

(1)RDB持久化與AOF持久化起使

(2)如果Redis中的數據并不是特別敏感或者可以通過其它?式重寫?成數據

(3)集群中可以關閉AOF持久化,靠集群的備份?式保證可?性

(4)??制定策略定期檢查Redis的情況,然后可以?動觸發備份、重寫數據;

(5)采?集群和主從同步

在Redis4.0后支持混合模式

RDB和AOF可以一起用了,直接將RDB持久化的方式來操作二進制內容覆蓋到AOF文件中,因為RDB是二進制,所以很小。有寫入的話還是繼續append追加到文件的原始命令,等下次文件過大的時候在次rewrite,所以在企業中這種混合模式是比較常見的。

 

責任編輯:武曉燕 來源: 零零后程序員小三
相關推薦

2021-09-02 09:53:42

開發Redis配置

2021-09-01 09:44:16

Redis持久化配置

2024-04-17 08:35:04

Lua腳本Redis數據結構

2023-03-23 08:11:59

2021-03-06 08:10:16

Redis6 Java架構分布式框架

2022-08-11 08:46:23

索引數據結構

2024-05-06 00:30:00

MVCC數據庫

2018-09-30 08:42:10

2019-05-08 16:00:48

人工智能人臉識別刷臉

2018-01-02 09:31:12

大數據數據互聯網

2024-05-28 10:08:05

2021-07-26 23:57:48

Vuex模塊項目

2023-08-28 07:39:49

線程調度基本單位

2024-12-20 12:15:06

RedisRDB持久化

2023-08-02 08:14:33

監控MTS性能

2022-03-23 15:36:13

數字化轉型數據治理企業

2011-06-24 17:30:34

網站權重

2018-08-24 06:56:17

2024-09-13 17:13:56

Redis 6NoSQL多線程

2023-10-12 13:01:29

Redis數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 9191成人精品久久 | 欧美在线一区二区三区 | 日本午夜在线视频 | 国产日韩精品视频 | 自拍偷拍亚洲欧美 | 亚洲精品视频久久 | 精品国产乱码久久久久久影片 | 91在线看| 青娱乐自拍 | 97精品超碰一区二区三区 | 日韩精品在线视频免费观看 | 欧美在线视频一区二区 | 九九伦理电影 | 91婷婷韩国欧美一区二区 | 中国一级大毛片 | 黄色网址在线免费播放 | 久久久免费电影 | 中文字幕免费视频 | 欧美综合国产精品久久丁香 | 日韩综合在线视频 | 男女黄网站 | 国产午夜精品一区二区三区嫩草 | 日韩第一页 | 97伦理电影 | 91在线网| 亚洲视频区| 激情在线视频网站 | 成人午夜激情 | 欧美一区二区三区在线 | 天啪 | 91热在线 | 天天草av| 久久久久久久久久久久久91 | 日韩欧美国产精品一区二区 | 国产一区二区欧美 | 成人性生交大片免费看r链接 | 欧美日韩专区 | 午夜免费福利影院 | 丁香综合| 波多野结衣二区 | 日韩av啪啪网站大全免费观看 |