Redis中不同持久化方式的差異對比
前言
大家應(yīng)該都知道,Redis持久化方式主要有兩種:RDB(Redis DataBase)和AOF(Append-only file)。
但是他們各自存儲了什么內(nèi)容?有什么差異呢?今天我來給大家做個小試驗。
前期準(zhǔn)備,需要安裝好docker、docker-compose的運行環(huán)境。
一、安裝Redis
1、創(chuàng)建相關(guān)目錄,執(zhí)行如下命令。
mkdir -p /docker/redis/{data,log} cd /docker/redis
2、編寫yaml文件,內(nèi)容如下;version替換成自己的docker-compose版本。
vim docker-compose.yaml version: '2.2.2' services: redis: image: redis container_name: redis user: redis restart: always command: ["redis-server", "/usr/local/etc/redis/redis.conf"] ports: - "6379:6379" volumes: - ./data:/data - ./log:/var/log/redis - ./redis.conf:/usr/local/etc/redis/redis.conf networks: - mynet networks: mynet: name: mynet driver: bridge
3、編寫配置文件,內(nèi)容如下。
vim redis.conf # 綁定的IP地址,若想監(jiān)聽所有網(wǎng)卡則可以注釋掉(默認(rèn)只監(jiān)聽本地環(huán)回接口) # bind 127.0.0.1 # Redis服務(wù)器運行的TCP端口 port 6379 # 是否以守護(hù)進(jìn)程模式運行 daemonize no # PID文件位置 pidfile /var/run/redis-server.pid # 日志文件位置 logfile "/var/log/redis/redis-server.log" # 數(shù)據(jù)庫的數(shù)量,默認(rèn)是16個 databases 16 # 持久化選項 # RDB快照配置 save 1 1 save 900 1 save 300 10 save 60 10000 # AOF持久化開關(guān) appendonly no # AOF重寫條件 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # 日志級別 loglevel notice # TCP連接超時時間(秒) timeout 0 # 客戶端閑置多長時間后斷開連接(秒) tcp-keepalive 300
4、啟動服務(wù),執(zhí)行如下命令。
docker-compose up -d
5、檢查服務(wù)是否正常啟動,執(zhí)行如下命令。
docker-compose ps -a
正常情況會返回類似如下內(nèi)容。
6、如果有服務(wù)啟動失敗,可以使用如下命令排查問題。
docker logs redis
7、至此,Redis安裝完成并且已正常運行。
二、測試RDB(Redis DataBase)
1、修改配置文件,開啟RDB模式關(guān)閉AOF模式,內(nèi)容如下。
# 持久化選項 # RDB快照配置 # 這意味著如果Redis服務(wù)器在900秒(15分鐘)內(nèi)至少有一個鍵的數(shù)據(jù)發(fā)生變化,它將會執(zhí)行一次RDB持久化操作。 save 900 1 # 這個設(shè)置指,在300秒(5分鐘)內(nèi)如果有至少10個不同的鍵發(fā)生了變化,Redis也會創(chuàng)建一個新的RDB文件并將其保存到磁盤。 save 300 10 # 這個規(guī)則則表明,即使在很短的時間窗口內(nèi)(60秒,即1分鐘),只要有10000次(任何數(shù)量的變化都可以視為達(dá)到該閾值,因為通常情況下1分鐘內(nèi)不會發(fā)生如此大量的變更)鍵的變化,Redis也將執(zhí)行持久化。 save 60 10000 # AOF持久化開關(guān) appendonly no
2、重新啟動Redis,執(zhí)行如下命令。
docker-compose down && docker-compose up -d
3、進(jìn)入Redis客戶端,執(zhí)行如下命令。
docker exec -ti redis redis-cli
4、進(jìn)行一些簡單的操作,設(shè)置key、刪除key,執(zhí)行類似如下的命令。
set t1 max set t1 hello-max set t1 world-max
5、查看RDB文件,執(zhí)行如下命令。
cat data/dump.rdb
返回內(nèi)容如下。
從文件中可以看出來,只記錄了最后一次設(shè)置的key跟value。
6、刪除t1,然后再查看文件內(nèi)容如下。
從文件中已經(jīng)看不到t1的記錄了。
7、至此,RDB模式已測試完成。
三、測試AOF(Append-only file)
1、修改配置文件,開啟AOF模式關(guān)閉RDB模式,內(nèi)容如下。
# 持久化選項 # RDB快照配置 # RDB配置全部注釋掉 #save 900 1 #save 300 10 #save 60 10000 # AOF持久化開關(guān) appendonly yes
2、重新啟動Redis,執(zhí)行如下命令。
docker-compose down && docker-compose up -d
3、進(jìn)入Redis客戶端,執(zhí)行如下命令。
docker exec -ti redis redis-cli
4、進(jìn)行一些簡單的操作,設(shè)置key、刪除key,執(zhí)行類似如下的命令。
set t1 max set t1 hello-max set t1 world-max del t1
5、查看AOF文件,執(zhí)行如下命令。
cat data/appendonly.aof
返回內(nèi)容如下。
從文件中可以看出來,每次的操作都有記錄。
6、至此、AOF模式已測試完成。
總結(jié)
Redis持久化方式主要有兩種:RDB(Redis DataBase)和AOF(Append-only file)。
1、RDB(Redis DataBase)
- 保存了某個時間點上的數(shù)據(jù)快照,對于恢復(fù)數(shù)據(jù)來說比較快。
- 占用空間相對較小,節(jié)省磁盤空間。
2、AOF(Append-only file)
- 記錄Redis執(zhí)行的每個寫命令,保證了每個寫操作都能被持久化,從而提高了數(shù)據(jù)安全性。
- 文件是一個文本文件,易于閱讀和理解,對于排查問題有幫助。
- 因為記錄了每個寫操作,所以AOF文件通常比RDB文件大。
到此這篇關(guān)于Redis中不同持久化方式的差異對比的文章就介紹到這了,更多相關(guān)Redis持久化方式差異內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis快速實現(xiàn)分布式session的方法詳解
Session是客戶端與服務(wù)器通訊會話跟蹤技術(shù),服務(wù)器與客戶端保持整個通訊的會話基本信息。本文主要介紹了Redis快速實現(xiàn)分布式session的方法,感興趣的可以學(xué)習(xí)一下2022-01-01詳解Redis中的簡單動態(tài)字符串和C字符串的區(qū)別
簡單動態(tài)字符串(SDS)和?C?字符串在實現(xiàn)和特性上存在一些區(qū)別,這些區(qū)別使得?SDS?更適合作為?Redis?中字符串對象的內(nèi)部表示,本文給大家介紹一下Redis中的簡單動態(tài)字符串和C字符串的區(qū)別,需要的朋友可以參考下2023-12-12Linux服務(wù)器快速安裝Redis6.0步驟示例詳解
這篇文章主要為大家介紹了Linux服務(wù)器快速安裝Redis6.0步驟示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12