Redis中不同持久化方式的差異對(duì)比
前言
大家應(yīng)該都知道,Redis持久化方式主要有兩種:RDB(Redis DataBase)和AOF(Append-only file)。
但是他們各自存儲(chǔ)了什么內(nèi)容?有什么差異呢?今天我來給大家做個(gè)小試驗(yàn)。
前期準(zhǔn)備,需要安裝好docker、docker-compose的運(yùn)行環(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ù)器運(yùn)行的TCP端口 port 6379 # 是否以守護(hù)進(jìn)程模式運(yùn)行 daemonize no # PID文件位置 pidfile /var/run/redis-server.pid # 日志文件位置 logfile "/var/log/redis/redis-server.log" # 數(shù)據(jù)庫的數(shù)量,默認(rèn)是16個(gè) databases 16 # 持久化選項(xiàng) # 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 # 日志級(jí)別 loglevel notice # TCP連接超時(shí)時(shí)間(秒) timeout 0 # 客戶端閑置多長時(shí)間后斷開連接(秒) tcp-keepalive 300
4、啟動(dòng)服務(wù),執(zhí)行如下命令。
docker-compose up -d
5、檢查服務(wù)是否正常啟動(dòng),執(zhí)行如下命令。
docker-compose ps -a
正常情況會(huì)返回類似如下內(nèi)容。
6、如果有服務(wù)啟動(dòng)失敗,可以使用如下命令排查問題。
docker logs redis
7、至此,Redis安裝完成并且已正常運(yùn)行。
二、測(cè)試RDB(Redis DataBase)
1、修改配置文件,開啟RDB模式關(guān)閉AOF模式,內(nèi)容如下。
# 持久化選項(xiàng) # RDB快照配置 # 這意味著如果Redis服務(wù)器在900秒(15分鐘)內(nèi)至少有一個(gè)鍵的數(shù)據(jù)發(fā)生變化,它將會(huì)執(zhí)行一次RDB持久化操作。 save 900 1 # 這個(gè)設(shè)置指,在300秒(5分鐘)內(nèi)如果有至少10個(gè)不同的鍵發(fā)生了變化,Redis也會(huì)創(chuàng)建一個(gè)新的RDB文件并將其保存到磁盤。 save 300 10 # 這個(gè)規(guī)則則表明,即使在很短的時(shí)間窗口內(nèi)(60秒,即1分鐘),只要有10000次(任何數(shù)量的變化都可以視為達(dá)到該閾值,因?yàn)橥ǔG闆r下1分鐘內(nèi)不會(huì)發(fā)生如此大量的變更)鍵的變化,Redis也將執(zhí)行持久化。 save 60 10000 # AOF持久化開關(guān) appendonly no
2、重新啟動(dòng)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模式已測(cè)試完成。
三、測(cè)試AOF(Append-only file)
1、修改配置文件,開啟AOF模式關(guān)閉RDB模式,內(nèi)容如下。
# 持久化選項(xiàng) # RDB快照配置 # RDB配置全部注釋掉 #save 900 1 #save 300 10 #save 60 10000 # AOF持久化開關(guān) appendonly yes
2、重新啟動(dòng)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模式已測(cè)試完成。
總結(jié)
Redis持久化方式主要有兩種:RDB(Redis DataBase)和AOF(Append-only file)。
1、RDB(Redis DataBase)
- 保存了某個(gè)時(shí)間點(diǎn)上的數(shù)據(jù)快照,對(duì)于恢復(fù)數(shù)據(jù)來說比較快。
- 占用空間相對(duì)較小,節(jié)省磁盤空間。
2、AOF(Append-only file)
- 記錄Redis執(zhí)行的每個(gè)寫命令,保證了每個(gè)寫操作都能被持久化,從而提高了數(shù)據(jù)安全性。
- 文件是一個(gè)文本文件,易于閱讀和理解,對(duì)于排查問題有幫助。
- 因?yàn)橛涗浟嗣總€(gè)寫操作,所以AOF文件通常比RDB文件大。
到此這篇關(guān)于Redis中不同持久化方式的差異對(duì)比的文章就介紹到這了,更多相關(guān)Redis持久化方式差異內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis之如何實(shí)現(xiàn)用戶關(guān)注
這篇文章主要介紹了Redis之如何實(shí)現(xiàn)用戶關(guān)注問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03基于Redis實(shí)現(xiàn)阻塞隊(duì)列的方式
本文主要講解基于?Redis?的方式實(shí)現(xiàn)異步隊(duì)列,基于?Redis?的?list?實(shí)現(xiàn)隊(duì)列的方式也有多種,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2021-12-12Redis快速實(shí)現(xiàn)分布式session的方法詳解
Session是客戶端與服務(wù)器通訊會(huì)話跟蹤技術(shù),服務(wù)器與客戶端保持整個(gè)通訊的會(huì)話基本信息。本文主要介紹了Redis快速實(shí)現(xiàn)分布式session的方法,感興趣的可以學(xué)習(xí)一下2022-01-01詳解Redis中的簡單動(dòng)態(tài)字符串和C字符串的區(qū)別
簡單動(dòng)態(tài)字符串(SDS)和?C?字符串在實(shí)現(xiàn)和特性上存在一些區(qū)別,這些區(qū)別使得?SDS?更適合作為?Redis?中字符串對(duì)象的內(nèi)部表示,本文給大家介紹一下Redis中的簡單動(dòng)態(tài)字符串和C字符串的區(qū)別,需要的朋友可以參考下2023-12-12Linux服務(wù)器快速安裝Redis6.0步驟示例詳解
這篇文章主要為大家介紹了Linux服務(wù)器快速安裝Redis6.0步驟示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12