使用Docker部署Redis并配置持久化與密碼保護的詳細步驟
1. 準備工作
1.1 安裝 Docker
確保已安裝 Docker。如果未安裝,請參考以下命令:
Ubuntu/Debian:
sudo apt-get update sudo apt-get install docker.io
CentOS/Fedora:
sudo yum install docker
macOS/Windows:
下載并安裝 Docker Desktop。
安裝完成后,啟動 Docker 服務(wù):
sudo systemctl start docker sudo systemctl enable docker
2. 創(chuàng)建 Redis 目錄和配置文件
2.1 創(chuàng)建目錄
在 /home/middleware/redis 下創(chuàng)建 data 目錄用于存放 Redis 數(shù)據(jù),并創(chuàng)建 redis.conf 配置文件:
mkdir -p /home/middleware/redis/data touch /home/middleware/redis/redis.conf
2.2 編輯配置文件
編輯 redis.conf 文件,添加以下內(nèi)容:
bind 0.0.0.0 port 6379 dir /data dbfilename dump.rdb # 設(shè)置 Redis 密碼 requirepass yourpassword # RDB 持久化配置 # 900 秒(15 分鐘)內(nèi)至少有 1 個鍵被修改時觸發(fā)保存 save 900 1 # 300 秒(5 分鐘)內(nèi)至少有 10 個鍵被修改時觸發(fā)保存 save 300 10 # 60 秒(1 分鐘)內(nèi)至少有 10000 個鍵被修改時觸發(fā)保存 save 60 10000
bind 0.0.0.0:允許所有 IP 連接。port 6379:Redis 服務(wù)端口。dir /data:數(shù)據(jù)存儲目錄。dbfilename dump.rdb:數(shù)據(jù)文件名。requirepass yourpassword:設(shè)置 Redis 密碼(將yourpassword替換為你的密碼)。save:配置 RDB 持久化規(guī)則(詳見下文解釋)。
2.3 save 指令詳解
save 指令用于配置 Redis 的 RDB 持久化策略。它的語法如下:
save <seconds> <changes>
<seconds>:時間間隔(秒)。<changes>:在指定時間間隔內(nèi),如果數(shù)據(jù)發(fā)生了至少<changes>次修改,則觸發(fā)保存。
示例解釋
在配置文件中:
save 900 1 save 300 10 save 60 10000
save 900 1- 如果 900 秒(15 分鐘) 內(nèi),至少有 1 個鍵 被修改,則觸發(fā)保存。
save 300 10- 如果 300 秒(5 分鐘) 內(nèi),至少有 10 個鍵 被修改,則觸發(fā)保存。
save 60 10000- 如果 60 秒(1 分鐘) 內(nèi),至少有 10000 個鍵 被修改,則觸發(fā)保存。
為什么需要多個 save 規(guī)則?
多個 save 規(guī)則可以平衡 數(shù)據(jù)安全性 和 性能:
- 頻繁保存(如
save 60 10000):確保數(shù)據(jù)丟失的風險最小化,但可能會影響性能,因為頻繁的磁盤寫入會增加 I/O 負載。 - 較少保存(如
save 900 1):減少磁盤 I/O,但可能會增加數(shù)據(jù)丟失的風險。
通過組合多個規(guī)則,Redis 可以在不同場景下靈活地觸發(fā)數(shù)據(jù)保存。
3. 使用 Docker 運行 Redis
3.1 拉取 Redis 鏡像
從 Docker Hub 拉取 Redis 官方鏡像:
docker pull redis
3.2 啟動 Redis 容器
運行以下命令啟動 Redis 容器,并掛載配置文件和數(shù)據(jù)目錄:
docker run --name redis -d \ -p 6379:6379 \ -v /home/middleware/redis/data:/data \ -v /home/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf \ redis redis-server /usr/local/etc/redis/redis.conf
--name redis:容器命名為redis。-d:后臺運行容器。-p 6379:6379:將主機的 6379 端口映射到容器的 6379 端口。-v /home/middleware/redis/data:/data:掛載數(shù)據(jù)目錄。-v /home/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf:掛載配置文件。redis redis-server /usr/local/etc/redis/redis.conf:使用自定義配置文件啟動 Redis。
4. 驗證 Redis 部署
4.1 檢查容器狀態(tài)
運行以下命令,查看容器是否正常運行:
docker ps
4.2 連接 Redis
使用 redis-cli 連接 Redis,并驗證密碼:
docker exec -it redis redis-cli
在 Redis CLI 中執(zhí)行以下命令進行認證:
AUTH yourpassword
認證成功后,可以執(zhí)行 Redis 命令,例如:
SET mykey "Hello, Redis!" GET mykey
4.3 驗證數(shù)據(jù)持久化
停止并重新啟動 Redis 容器:
docker stop redis docker start redis
再次連接 Redis,檢查數(shù)據(jù)是否仍然存在:
docker exec -it redis redis-cli AUTH yourpassword GET mykey
5. 使用 Docker Compose(可選)
如果你更喜歡使用 Docker Compose 管理 Redis 容器,可以創(chuàng)建 docker-compose.yml 文件:
version: '3'
services:
redis:
image: redis
container_name: redis
ports:
- "6379:6379"
volumes:
- /home/middleware/redis/data:/data
- /home/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
然后運行以下命令啟動服務(wù):
docker-compose up -d
停止服務(wù):
docker-compose down
6. 目錄結(jié)構(gòu)
最終的 /home/middleware/redis 目錄結(jié)構(gòu)如下:
/home/middleware/redis/ ├── data/ # Redis 持久化數(shù)據(jù)目錄 │ └── dump.rdb # Redis 數(shù)據(jù)文件 └── redis.conf # Redis 配置文件
7. 總結(jié)
通過以上步驟,你已經(jīng)成功使用 Docker 部署了 Redis,并通過 redis.conf 配置文件實現(xiàn)了數(shù)據(jù)持久化和密碼保護。本文還詳細解釋了 save 指令的作用和配置方法,幫助你根據(jù)業(yè)務(wù)需求靈活調(diào)整持久化策略。
以上就是使用Docker部署Redis并配置持久化與密碼保護的詳細步驟的詳細內(nèi)容,更多關(guān)于Docker部署Redis持久化與密碼保護的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在Redis數(shù)據(jù)庫中實現(xiàn)分布式速率限制的方法
這篇文章主要介紹了在Redis數(shù)據(jù)庫中實現(xiàn)分布式速率限制的方法,文中展示了一個用Python編寫的應(yīng)用示例,需要的朋友可以參考下2015-06-06
Redis+aop實現(xiàn)接口防刷(冪等)的解決方案
在高并發(fā)場景下,可能會因為網(wǎng)絡(luò)或者服務(wù)器原因,造成延遲,同時就是有可能會有人用腳本大量訪問你的接口,造成資源崩潰,所以本文給大家介紹了Redis+aop實現(xiàn)接口防刷(冪等)的解決方案,需要的朋友可以參考下2024-03-03
Redis五種數(shù)據(jù)結(jié)構(gòu)在JAVA中如何封裝使用
本篇博文就針對Redis的五種數(shù)據(jù)結(jié)構(gòu)以及如何在JAVA中封裝使用做一個簡單的介紹。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11
redis內(nèi)部數(shù)據(jù)結(jié)構(gòu)之SDS簡單動態(tài)字符串詳解
SDS是Redis中實現(xiàn)的一種數(shù)據(jù)結(jié)構(gòu),用來存儲字符串,最近學習中正好學習到了這里,所以下面這篇文章主要給大家介紹了redis內(nèi)部數(shù)據(jù)結(jié)構(gòu)之SDS簡單動態(tài)字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11
Redis increment 函數(shù)處理并發(fā)序列號案例
這篇文章主要介紹了Redis increment 函數(shù)處理并發(fā)序列號案例,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-08-08

