歡迎關注劉哥講技術,上一節我們講到通過docker安裝了多臺的mysql,很簡單,那么我們這一節,利用 Docker 在一臺機器上部署多個 Redis 實體,

那么redis是什么呢?Redis 是一個開源的使用 ANSI C 語言撰寫、支持網路、可基于記憶體亦可持久化的日志型、Key-Value 的 NoSQL 資料庫,并提供多種語言的 API,
現在分布式快取首選的應用,面試也基本離不開它,一起來學習學習它吧,
一、單機版本Redis
- 1、查看可用的 Redis 版本
訪問 Redis 鏡像庫地址:
https://hub.docker.com/_/redis
此外,我們還可以用命令來查看可用版本,
docker search redis
- 2、取最新版的 Redis 鏡像
這里我們獲取官方的默認的鏡像:
docker pull redis
- 3、查看本地鏡像
使用以下命令來查看是否已安裝了 redis,
docker images
- 4、運行容器
安裝完成后,我們可以使用以下命令來運行 redis 容器
(1)創建掛載目錄
創建一個檔案夾用來存放redis的組態檔、資料等(也就是所謂的掛載目錄,作用就是將此目錄中的檔案或檔案夾覆寫掉容器內部的檔案或檔案夾)
mkdir -p $HOME/docker/redis
(2)進入到該目錄下
cd $HOME/docker/redis
(3)啟動redis容器
docker run -d -p 6379:6379 -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf -v $PWD/data:/data --name myredis redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes --requirepass "123456"
引數詳解:
- -d:表示后臺運行
- -p:表示埠映射,冒號左面的是我們的宿主機的埠,也就是我們虛擬機的埠
- --name:給容器取的名字
- -v:表示掛載路徑,
- redis-server --appendonly yes :在容器執行redis-server啟動命令,并打開redis持久化配置
- --requirepass 設定redis密碼
(4)檢測是否安裝成功
最后我們可以通過 docker ps 命令查看容器的運行資訊
docker ps
(5)查看容器的ip
如果沒有指定容器內的ip,每次啟動有可能都是會變化的,如果沒有指定,那么我們可以通過以下命令來查看ip,然后登陸:
docker inspect myredis | grep IPAddress
我電腦分配的ip為:
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
(6)測驗使用redis 服務
可以通過以下連接命令進行連接,
不帶密碼版本,命令視窗再輸入
docker exec -ti myredis redis-cli -h 172.17.0.2 -p 6379 -a 123456
帶密碼版本,不用再輸入密碼
docker exec -ti myredis redis-cli -h 172.17.0.2 -p 6379 -a 123456
說明:
- myredis 你設定的容器名字,
- 默認是通過6379埠
- 默認ip為:127.0.0.1
- 一般需要指定獲取的ip地址,
(7)測驗程序
我這里先通過密碼框登陸
docker exec -ti myredis redis-cli -h 172.17.0.2 -p 6379
首先獲取一下值,看看是否可以使用,發現提示未認證:(error) NOAUTH Authentication required.
get myname
先輸入錯誤的密碼,進行驗證,發現提示密碼錯誤:(error) NOAUTH Authentication required.
auth 12345
我們再輸入正確的密碼,提示ok即可
auth 123456
再次獲取值,發現redis存盤為空:(nil)
get myname
對name值進行設定
set myname liuge
獲取name值
get myname
我們可以通過redis desktop manager 進行連接進行查看,Redis桌面管理器(又名RDM) 是一個用于Windows,Linux和MacOS的快速開源Redis資料庫管理應用程式,當然你也可以通過以下方式連接測驗:RedisView、WebRedisManager、RedisDesktopManager、RedisPlus、AnotherRedisDesktopManager、FastoRedis,

小結:
如果你是簡單實用,那么上面就能滿足日常測驗,學習redis命令等應用了,
但是,有時候還需要另外一臺作為比較正式或者其他用,還是需要再搭建一臺,
在windows那時候,我是通過修改組態檔,然后通過啟動腳本,重新啟動一份,比較折騰,有了docker,這個比較好解決,
如果有這個需求,可以接下來的教程,
二、多臺Redis共存的情況
(1)創建掛在目錄
data存放資料,conf存放組態檔,
mkdir -p $HOME/docker/redis2
(2)進入該目錄
cd $HOME/docker/redis2
(3)啟動redis容器
docker run -d -p 6388:6379 -v $PWD/redis.conf:/usr/local/etc/redis/redis.conf -v $PWD/data:/data --name myredis2 redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes --requirepass "redispassword"
(4)檢測是否安裝成功
最后我們可以通過 docker ps 命令查看容器的運行資訊
docker ps
(5)查看容器的ip
docker inspect myredis2 | grep IPAddress
目前電腦的redis的ip為
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",
(6)測驗使用redis 服務
可以通過以下連接命令進行連接,myredis你設定的容器名字,
docker exec -it myredis2 redis-cli
輸入密碼
docker exec -it myredis2 redis-cli
三、搭建Redis集群
對于大多數中小公司來說,通常單機的Redis已經足夠,最多根據不同業務分散到多臺Redis,
為什么需要集群呢?
- Redis單執行緒特性,多請求順序執行,單個耗時的操作會阻塞后續的操作
- 單機記憶體有限
- 某些特殊業務,帶寬壓力較大
- 單點問題,缺乏高可用性
- 不能動態擴容
- Redis集群的目標就是為了實作高可用性,避免性能瓶頸,可動態擴容,易于做監控告警,
那么接下來,我們看下如何進行安裝,
我這里是通過一個比較快捷的方案,是一個開源的redis集群鏡像來搭建,
集群是6個Redis實體,其中運行3個主節點和3個從節點,每個主節點一個從節點,它們在埠7000到7005上運行,接下來我們看看如何搭建:
鏡像地址
原始碼
https://github.com/Grokzen/docker-redis-cluster
倉庫地址
https://hub.docker.com/r/grokzen/redis-cluster/
拉取鏡像
docker pull grokzen/redis-cluster
通過這個鏡像可以快速輕松地啟動和運行Redis集群,用于演示/演示/開發,注意生產環境沒經過嚴格驗證,還不推薦直接使用,
docker run -e "IP=0.0.0.0" -e STANDALONE=true -e SENTINEL=true -d grokzen/redis-cluster:latest
引數說明
- -e "IP=0.0.0.0" 將內部IP環境變數添加到docker run命令中,使用此容器在Mac計算機上運行Redis集群,則需要將容器配置為使用另一個IP地址進行集群發現,因為它無法使用硬編碼到容器中的默認發現IP,
- -e SENTINEL=true 默認情況下,未啟用Sentinel實體,表示啟用哨兵實體,如果-e "STANDALONE=true"通過該標志,則默認情況下在埠7006和7007上運行2個獨立實體,但是,您可以將此變數設定為所需的多個獨立節點,例如-e "STANDALONE=1",請注意,獨立埠在最后一個從屬設備之后立即啟動,如果-e "SENTINEL=true"傳遞了該標志,則在與群集的主實體匹配的埠5000到5002上運行3個Sentinel節點,
查看容器的ip
docker inspect distracted_wing | grep IPAddress
測驗
docker exec -ti distracted_wing redis-cli -p 7000
(error) MOVED 原因和解決方案
錯誤:
(error) MOVED 6918 127.0.0.1:7001
這種情況一般是因為redis-cli連接redis服務時候,沒有指定是集群模式連接,啟動時使用-c引數來啟動集群模式,命令如下:
docker exec -ti distracted_wing redis-cli -c -p 7000
查看集群資訊
cluster info
查看節點資訊
cluster nodes

后面有時間再分享,如何通過redis原始碼自己構建一個docker redis 集群鏡像,
閱讀更多
- Docker 技術系列之安裝Docker Desktop for Mac
- Docker 技術系列之安裝多版本Mysql5.6和Mysql5.7
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/21038.html
標籤:其他
上一篇:Unity輸入法相關(IME)
下一篇:主流資料監控運維系統簡單對比
