# Redis資料庫安裝筆記 2021/01/24 初版 2021/02/09 新增Port Forwarding 筆記整理: 蘇彥庭 * [Redis官網](https://redis.io/) ![](https://i.imgur.com/IyqcjHC.png) * [DB-Engines Ranking - 資料庫排名](https://db-engines.com/en/ranking) ![](https://i.imgur.com/WfDjbde.png) # 安裝環境說明 * 虛擬機器軟體:VMware Workstation 16 Pro * 主體作業系統:Windows 10 * 客體作業系統:CentOS7 Redis官網只提供在Linux作業系統上安裝的方式,故此篇文章是在CentOS7作業系統上進行安裝。 # 一、在CentOS7安裝Python3 CentOS7本身自帶Python2程式,需要另行安裝Python3 我參考的安裝說明: [【Python】在 CentOS 7 上安裝 Python3](https://kirin.idv.tw/python-install-python3-in-centos7/) ```bash= # 安裝python3.6版本 sudo yum install python36 # 升級pip套件 pip3 install --upgrade pip # 提醒:記得是pip3 若為pip會裝成python2的套件 # 輸入Python3後即會進到Python環境 python3 # 提醒:一定要輸入python3 若輸入python會進到python2.7環境 # 若要離開Python環境回到terminal環境則輸入 `quit()` ``` # 二、安裝與連線Redis資料庫 * [redis官網提供的安裝指令](https://redis.io/download) 除了在Linux作業系統本機上直接安裝Redis資料庫外,也可利用Docker來安裝 接下來將分別說明**本機直接安裝**和**Docker安裝** 可自行挑選任一安裝方式 ## 1. 在Linux本機直接安裝Redis資料庫 * 此處參考的安裝說明: [【Redis】CentOS7下安装Redis服务](https://segmentfault.com/a/1190000023092469) ### Step1. 安裝gcc9 在本機安裝需編譯Redis資料庫,故需要安裝gcc,此處安裝gcc第9版 ```bash= # 首先在CentOS7上安裝gcc sudo yum -y install centos-release-scl sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils # scl命令啟用僅在當前shell有效 退出shell後重進會回復成原本設定(即沒有gcc) scl enable devtoolset-9 bash # 查看gcc版本 gcc --version ``` ### Step2. 安裝Redis ```bash= # 取得Redis安裝壓縮檔 wget https://download.redis.io/releases/redis-6.0.10.tar.gz # 解壓縮 tar xzf redis-6.0.10.tar.gz # 切換當redis安裝資料夾路徑 cd redis-6.0.10 # 執行編譯 make ``` 安裝成功畫面如下圖所示: ![](https://i.imgur.com/E4xznhD.png) ### Step3. 執行Redis server 接下來執行redis server ```bash= # 執行redis server src/redis-server ``` 成功執行redis server畫面如下: ![](https://i.imgur.com/jPf6EnY.png) 執行後畫面會被server綁定,此時需要開新的terminal進行連線 若要終止server運作,可直接按`ctrl+c` ### Step4. 連線Redis server ```bash= # 要記得先切換到redis-6.0.10資料夾底下 cd redis-6.0.10 # 執行連線 src/redis-cli ``` ### Step5. 測試Redis指令 ```bash= # 依據官網提供測試程式碼 在Redis環境內執行 set foo bar get foo ``` 執行結果如下: ![](https://i.imgur.com/ONSlKan.png) ### Step6. 在Python內執行Redis 我參考的說明:[Python redis 使用介绍](https://www.runoob.com/w3cnote/python-redis-intro.html) 若要在CentOS7上執行Python3,直接在terminal上輸入`python3`,注意這邊不能輸入`python`,若輸入`python`會直接進入到`python2`環境 ```bash= # 首先安裝python的redis套件 sudo pip3 install redis # 執行Python3 python3 ``` 進到python3環境後,輸入以下指令進行測試: ```python= # 載入套件 import redis # 連入redis資料庫 r = redis.StrictRedis(host='localhost', port=6379, db=0) # redis指令 r.set('foo', 'bar') r.get('foo') ``` 執行成果: ![](https://i.imgur.com/kObBXRi.png) ### 補充: Windows主機直接連線Redis 在虛擬主機上啟動Redis Server後,也可以從Windows的Python連入虛擬機內的Redis資料庫進行操作,此處需要先打開CentOS7防火牆的Port。 在CentOS7執行以下指令: ```bash= # 防火牆永久開啟6379的Port 6379為Redis資料庫服務的端口 sudo firewall-cmd --zone=public --permanent --add-port=6379/tcp ``` 設定好防火牆後,重新啟動Redis伺服器,此處需要多加`--protected-mode`引數,要關閉保護模式才能從Windows連入: ```bash= src/redis-server --protected-mode no ``` 此外,還需要設定VMware的Port Forwarding,首先點選Edit->Virtual Network Editor: ![](https://i.imgur.com/Mytm89O.png) 啟用管理員權限,這樣才能修改設定: ![](https://i.imgur.com/jsrJW2L.png) 選擇VMnet8,然後點選NAT Settings: ![](https://i.imgur.com/0d7ZjjC.png) 點選Add: ![](https://i.imgur.com/VGxTDgy.png) 輸入相關設定,紅框內的IP需依自行的虛擬主機調整: ![](https://i.imgur.com/LucZRil.png) 設定好後一路按ok結束。 接下來打開Windows的PyCharm,安裝Redis套件(`pip install redis`),接下來輸入以下程式碼即可順利連接。 ```python= import redis # 連入redis資料庫 r = redis.StrictRedis(host='192.168.37.129', port=6379, db=0) # 此處需要自行調整host引數值,host為虛擬機的IP,可在linux輸入ifconfig查詢 # redis指令 r.set('foo', 'bar') r.get('foo') ``` ## 2. 用Docker安裝Redis資料庫 * [Docker Hub - redis官方image說明](https://hub.docker.com/_/redis) * 我參考的安裝說明: [[Redis] 使用 Docker 安裝 Redis](https://marcus116.blogspot.com/2019/02/how-to-run-redis-in-docker.html) ### Step1. 安裝CentOS的Docker套件 此處參考周廷諺老師的Docker講義 ```bash= # 安裝yum管理工具套件 sudo yum install -y yum-utils # 透過yum管理工具導入docker的repo來源 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 安裝docker主程式及所需套件 sudo yum install docker-ce docker-ce-cli containerd.io -y # 啟動docker sudo systemctl start docker # 自動常駐/啟動docker sudo systemctl enable docker # 檢查docker是否啟用並常駐 sudo systemctl status docker # 將當前使用者加入docker群組 sudo usermod -aG docker $USER # 登出目前使用者 exit # 重新登入後即可使用docker ``` ### Step2. 啟動Docker Redis容器 ```bash= # 建立Redis資料夾 mkdir redis # 切換至Redis cd redis # 搜尋Redis image docker search redis # 下載Redis image docker pull redis # 創建並啟動容器 docker run \ --name redis-lab \ -p 6379:6379 \ -d \ -v $(pwd)/data:/data \ --restart unless-stopped \ redis # docker run參數說明 # --name: 容器名稱 # -p: 主機port:容器port # -d: 背景執行 # -v: 主機資料夾:容器資料夾 # --restart: unless-stopped表示除非被手動停止 否則系統重新啟動時該容器即會自動重啟 # 關於--restart引數可參考: https://docs.docker.com/config/containers/start-containers-automatically/ ``` ### Step3. 在Python內執行redis 進到python3環境後,輸入以下指令進行測試: ```python= # 載入套件 import redis # 連入redis資料庫 r = redis.StrictRedis(host='localhost', port=6379, db=0) # redis指令 r.set('foo', 'bar') r.get('foo') ``` ### 補充: Windows主機直接連線Redis 在虛擬主機上部署好Docker的Redis Server後,除了在CentOS7的terminal上直接執行外,也可直接在Windows上的Python執行。 Docker部署時會略過防火牆限制,所以不用自行設定防火牆。 此外,還需要設定VMware的Port Forwarding,首先點選Edit->Virtual Network Editor: ![](https://i.imgur.com/Mytm89O.png) 啟用管理員權限,這樣才能修改設定: ![](https://i.imgur.com/jsrJW2L.png) 選擇VMnet8,然後點選NAT Settings: ![](https://i.imgur.com/0d7ZjjC.png) 點選Add: ![](https://i.imgur.com/VGxTDgy.png) 輸入相關設定,紅框內的IP需依自行的虛擬主機調整: ![](https://i.imgur.com/LucZRil.png) 設定好後一路按ok結束。 接下來打開Windows的PyCharm,安裝Redis套件(`pip install redis`),接下來輸入以下程式碼即可順利連接。 打開PyCharm,安裝redis套件(`pip install redis`),,接下來輸入以下程式碼即可順利連接。 ```python= import redis # 連入redis資料庫 r = redis.StrictRedis(host='192.168.37.129', port=6379, db=0) # 此處需要自行調整host引數值,host為虛擬機的IP,可在linux輸入ifconfig查詢 # redis指令 r.set('foo', 'bar') r.get('foo') ```