Docker部署Redis實現(xiàn)密碼訪問+數(shù)據(jù)持久化(服務器版)
今天是Docker部署系列的第二篇文章:用Docker部署Redis。
Redis是開發(fā)中最常用的緩存數(shù)據(jù)庫,搭配上一期的MySQL,基本就能滿足大部分項目的需求了。
本篇要點:
- ? 一分鐘啟動Redis
- ? 設置訪問密碼
- ? 數(shù)據(jù)持久化(防止重啟丟數(shù)據(jù))
- ? 配置文件自定義
- ? 遠程客戶端連接測試
一、準備工作
1.1 檢查Docker環(huán)境
首先確認服務器上已經(jīng)安裝了Docker:
docker --version
能看到版本號即可。如果沒有安裝,請參考官方文檔安裝Docker。
1.2 拉取Redis鏡像
我們選擇最新的穩(wěn)定版Redis 7:
docker pull redis:7
查看鏡像是否拉取成功:
docker images | grep redis
二、創(chuàng)建掛載目錄
在宿主機上創(chuàng)建目錄,存放Redis的數(shù)據(jù)和配置:
# 創(chuàng)建數(shù)據(jù)目錄和配置目錄 mkdir -p ~/docker/redis/data mkdir -p ~/docker/redis/config
目錄說明:
- ~/docker/redis/data:存放RDB/AOF持久化文件
- ~/docker/redis/config:存放redis.conf配置文件
三、準備Redis配置文件
3.1 下載官方配置文件模板
# 從官方GitHub下載最新配置文件 curl -o ~/docker/redis/config/redis.conf https://raw.githubusercontent.com/redis/redis/7.0/redis.conf
3.2 修改配置文件
下載完成后,用vim編輯配置文件:
vim ~/docker/redis/config/redis.conf
需要修改或確認以下關鍵配置:
# 綁定所有網(wǎng)卡(允許遠程連接) bind 0.0.0.0 # 保護模式(開啟密碼后可以關閉) protected-mode no # 端口號 port 6379 # 設置密碼(重要!生產(chǎn)環(huán)境必須設置) requirepass 123456 # 持久化配置 # RDB持久化(每隔60秒如果至少有1個key變化,就生成快照) save 60 1 # 持久化文件名 dbfilename dump.rdb # 持久化文件目錄 dir /data # AOF持久化(追加日志,更安全但文件更大) appendonly yes appendfilename "appendonly.aof" # 每秒鐘同步一次 appendfsync everysec # 最大內(nèi)存限制(根據(jù)實際情況調(diào)整) maxmemory 256mb # 內(nèi)存淘汰策略(volatile-lru:從已設置過期時間的key中淘汰最近最少使用的) maxmemory-policy volatile-lru
配置說明:
- requirepass:訪問密碼,一定要設置
- save 60 1:60秒內(nèi)有1個key變化就持久化
- appendonly yes:開啟AOF持久化
- maxmemory:限制內(nèi)存使用,防止Redis占滿服務器內(nèi)存
保存退出(vim操作:按ESC,輸入:wq回車)。
四、運行Redis容器
4.1 使用配置文件啟動
docker run -d \ --name redis7 \ -p 6379:6379 \ -v ~/docker/redis/data:/data \ -v ~/docker/redis/config/redis.conf:/usr/local/etc/redis/redis.conf \ --restart=always \ redis:7 \ redis-server /usr/local/etc/redis/redis.conf
4.2 驗證容器是否啟動
# 查看容器狀態(tài) docker ps
應該能看到redis7容器,狀態(tài)是Up
4.3 查看容器日志
docker logs redis7
看到Ready to accept connections就說明啟動成功了。
五、在服務器上驗證Redis
5.1 進入容器連接Redis
# 直接連接Redis(一步到位) docker exec -it redis7 redis-cli -a 123456
5.2 測試Redis命令
連接成功后,試試幾個基本命令:
# 設置一個key set name "docker redis" # 獲取key get name # 應該輸出: "docker redis" # 查看所有key keys * # 查看Redis信息 info server
能看到redis_version:7.x之類的信息,說明一切正常!
5.3 測試數(shù)據(jù)持久化
驗證重啟容器后數(shù)據(jù)是否還在:
# 先寫入一些數(shù)據(jù) set user:1 "張三" set user:2 "李四" set counter 100 # 退出Redis exit # 重啟容器 docker restart redis7 # 再次連接查看數(shù)據(jù) docker exec -it redis7 redis-cli -a 123456 # 查看之前寫入的key get user:1 # 應該還能看到"張三"
如果數(shù)據(jù)還在,說明持久化配置生效了!
六、配置服務器防火墻/安全組
6.1 檢查防火墻類型
# 你的服務器輸出顯示沒有firewall-cmd # 說明用的是UFW(Ubuntu默認防火墻)或者沒有開啟防火墻
6.2 如果是UFW防火墻
# 查看防火墻狀態(tài) ufw status # 開放6379端口 ufw allow 6379/tcp # 重啟防火墻 ufw reload
6.3 如果是云服務器(阿里云/騰訊云等)
需要在控制臺的安全組中開放6379端口:
1.登錄云服務商控制臺
2.找到你的實例對應的安全組
3.添加入方向規(guī)則:
- 端口范圍:6379
- 授權(quán)對象:0.0.0.0/0(允許所有IP,或指定你的本地IP)
- 協(xié)議:TCP
安全建議:生產(chǎn)環(huán)境不要直接開放給所有IP,建議只允許你的辦公網(wǎng)絡IP訪問。
七、常用Redis命令和Docker操作
7.1 Docker操作Redis
# 停止容器 docker stop redis7 # 啟動容器 docker start redis7 # 重啟容器 docker restart redis7 # 查看實時日志 docker logs -f redis7 # 進入容器 docker exec -it redis7 bash # 刪除容器(數(shù)據(jù)還在,因為掛載到宿主機了) docker rm -f redis7
8.2 Redis命令行常用操作
# 帶密碼登錄 redis-cli -a 密碼 # 選擇數(shù)據(jù)庫(默認0-15) select 1 # 查看所有key keys * # 查看key類型 type key名 # 設置過期時間(秒) expire key名 60 # 查看剩余時間 ttl key名 # 刪除key del key名 # 清空當前數(shù)據(jù)庫 flushdb # 清空所有數(shù)據(jù)庫(慎用!) flushall
八、常見問題排查
Q1:容器啟動失敗
# 查看錯誤日志 docker logs redis7
Q2:連接被拒絕(Connection refused)
可能原因:
- Redis沒啟動:docker ps查看容器狀態(tài)
- 端口沒映射對:檢查-p 6379:6379
- 防火墻沒開:檢查UFW/安全組配置
Q3:連接報錯"NOAUTH Authentication required"
沒有輸入密碼,或者密碼錯誤:
# 登錄時指定密碼 redis-cli -a 你的密碼 # 或者登錄后認證 redis-cli auth 你的密碼
Q4:遠程連接不上,但服務器本地可以
檢查:
1.配置文件中的bind是否設置為0.0.0.0
2.防火墻是否開放了6379端口
3.云服務器安全組是否添加了規(guī)則
Q5:重啟容器后數(shù)據(jù)丟了
檢查持久化配置是否生效:
# 進入容器查看配置 docker exec -it redis7 redis-cli -a 123456 # 查看持久化配置 config get save config get appendonly
如果appendonly是no,說明AOF沒開。檢查配置文件是否正確掛載。
九、性能測試(可選)
Redis自帶了性能測試工具redis-benchmark:
# 進入容器 docker exec -it redis7 bash # 運行性能測試(100個并發(fā),10000個請求) redis-benchmark -a 123456 -n 10000 -c 100 # 測試結(jié)果示例: # SET: 45000 requests per second # GET: 48000 requests per second
每秒幾萬次的讀寫,這就是Redis為什么這么快!
十、總結(jié)
通過本文,我們成功在服務器上實現(xiàn)了:
- ? Docker一鍵部署Redis 7
- ? 設置密碼保護
- ? 配置RDB+AOF雙重持久化
- ? 數(shù)據(jù)掛載到宿主機
- ? 服務器本地驗證
- ? 配置防火墻/安全組支持遠程連接
現(xiàn)在你的Redis已經(jīng)跑起來了,可以作為緩存、計數(shù)器、session存儲等使用!
到此這篇關于Docker部署Redis實現(xiàn)密碼訪問+數(shù)據(jù)持久化(服務器版)的文章就介紹到這了,更多相關Docker部署Redis密碼訪問+數(shù)據(jù)持久化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker實現(xiàn)導出、導入和數(shù)據(jù)搬遷
本篇文章主要介紹了docker實現(xiàn)導出、導入和數(shù)據(jù)搬遷,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
使用docker離線部署dify之docker鏡像問題及部署過程
這篇文章主要給大家介紹了關于使用docker離線部署dify之docker鏡像問題及部署過程,通過配置多個鏡像源解決了,此外還介紹了如何將Dify鏡像轉(zhuǎn)移到離線環(huán)境并啟動服務,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-04-04
如何批量刪除Docker中已經(jīng)停止的容器的幾種方法
本文主要介紹了批量刪除Docker中已經(jīng)停止的容器的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05
Windows?Docker部署Kong網(wǎng)關的實現(xiàn)步驟
Kong是一個輕量級、快速、靈活的云原生API網(wǎng)關,本文主要介紹了Windows?Docker部署Kong網(wǎng)關的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2024-03-03

