Linux安裝部署Redis(超級詳細)


 

前言

網上搜索了一筐如何在Linux下安裝部署Redis的文章,各種文章混搭在一起勉強安裝成功了。自己也記錄下,方便后續安裝時候有個借鑒之處。

  • Redis版本 5.0.4
  • 服務器版本 Linux CentOS 7.6 64位

下載Redis

進入官網找到下載地址 https://redis.io/download

 

右鍵Download按鈕,選擇復制鏈接。
進入到Xshell控制台(默認當前是root根目錄),輸入wget 將上面復制的下載鏈接粘貼上,如下命令:

1
wget http: //download.redis.io/releases/redis-5.0.7.tar.gz

敲入回車鍵執行后如下圖:

等待下載完成。

解壓並安裝Redis

 解壓

下載完成后需要將壓縮文件解壓,輸入以下命令解壓到當前目錄

1
tar -zvxf redis-5.0.7.tar.gz

解壓后在根目錄上輸入ls 列出所有目錄會發現與下載redis之前多了一個redis-5.0.7.tar.gz文件和 redis-5.0.7的目錄。

 

移動redis目錄

一般都會將redis目錄放置到 /usr/local/redis目錄,所以這里輸入下面命令將目前在/root目錄下的redis-5.0.7文件夾更改目錄,同時更改文件夾名稱為redis。

1
mv /root/redis-5.0.7 /usr/local/redis

cd 到/usr/local目錄下輸入ls命令可以查詢到當前目錄已經多了一個redis子目錄,同時/root目錄下已經沒有redis-5.0.7文件夾

 

 

編譯

cd到/usr/local/redis目錄,輸入命令make執行編譯命令,接下來控制台會輸出各種編譯過程中輸出的內容。

1
make

最終運行結果如下:

 

 

 

 安裝

輸入以下命令

1
make PREFIX=/usr/local/redis install

這里多了一個關鍵字 PREFIX= 這個關鍵字的作用是編譯的時候用於指定程序存放的路徑。比如我們現在就是指定了redis必須存放在/usr/local/redis目錄。假設不添加該關鍵字Linux會將可執行文件存放在/usr/local/bin目錄,

庫文件會存放在/usr/local/lib目錄。配置文件會存放在/usr/local/etc目錄。其他的資源文件會存放在usr/local/share目錄。這里指定號目錄也方便后續的卸載,后續直接rm -rf /usr/local/redis 即可刪除redis。

執行結果如下圖:

啟動redis

根據上面的操作已經將redis安裝完成了。在目錄/usr/local/redis 輸入下面命令啟動redis

1
./bin/redis-server& ./redis.conf

 

 

 上面的啟動方式是采取后台進程方式,下面是采取顯示啟動方式(如在配置文件設置了daemonize屬性為yes則跟后台進程方式啟動其實一樣)。

1
./bin/redis-server ./redis.conf

兩種方式區別無非是有無帶符號&的區別。 redis-server 后面是配置文件,目的是根據該配置文件的配置啟動redis服務。redis.conf配置文件允許自定義多個配置文件,通過啟動時指定讀取哪個即可。

redis.conf配置文件

在目錄/usr/local/redis下有一個redis.conf的配置文件。我們上面啟動方式就是執行了該配置文件的配置運行的。我么可以通過cat、vim、less等Linux內置的讀取命令讀取該文件。

也可以通過redis-cli命令進入redis控制台后通過CONFIG GET * 的方式讀取所有配置項。 如下:

1
2
redis-cli
CONFIG GET *

回車確認后會將所有配置項讀取出來,如下圖

這里列舉下比較重要的配置項

配置項名稱 配置項值范圍 說明
daemonize yes、no yes表示啟用守護進程,默認是no即不以守護進程方式運行。其中Windows系統下不支持啟用守護進程方式運行
port   指定 Redis 監聽端口,默認端口為 6379
bind   綁定的主機地址,如果需要設置遠程訪問則直接將這個屬性備注下或者改為bind * 即可,這個屬性和下面的protected-mode控制了是否可以遠程訪問 。
protected-mode yes 、no 保護模式,該模式控制外部網是否可以連接redis服務,默認是yes,所以默認我們外網是無法訪問的,如需外網連接rendis服務則需要將此屬性改為no。
timeout 300 當客戶端閑置多長時間后關閉連接,如果指定為 0,表示關閉該功能
loglevel debug、verbose、notice、warning 日志級別,默認為 notice
databases 16 設置數據庫的數量,默認的數據庫是0。整個通過客戶端工具可以看得到
rdbcompression yes、no 指定存儲至本地數據庫時是否壓縮數據,默認為 yes,Redis 采用 LZF 壓縮,如果為了節省 CPU 時間,可以關閉該選項,但會導致數據庫文件變的巨大。
dbfilename dump.rdb 指定本地數據庫文件名,默認值為 dump.rdb
dir   指定本地數據庫存放目錄
requirepass   設置 Redis 連接密碼,如果配置了連接密碼,客戶端在連接 Redis 時需要通過 AUTH <password> 命令提供密碼,默認關閉
maxclients 0 設置同一時間最大客戶端連接數,默認無限制,Redis 可以同時打開的客戶端連接數為 Redis 進程可以打開的最大文件描述符數,如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis 會關閉新的連接並向客戶端返回 max number of clients reached 錯誤信息。
maxmemory XXX <bytes> 指定 Redis 最大內存限制,Redis 在啟動時會把數據加載到內存中,達到最大內存后,Redis 會先嘗試清除已到期或即將到期的 Key,當此方法處理 后,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis 新的 vm 機制,會把 Key 存放內存,Value 會存放在 swap 區。配置項值范圍列里XXX為數值。

這里我要將daemonize改為yes,不然我每次啟動都得在redis-server命令后面加符號&,不這樣操作則只要回到Linux控制台則redis服務會自動關閉,同時也將bind注釋,將protected-mode設置為no。
這樣啟動后我就可以在外網訪問了。

更改方式: 

1
vim /usr/local/redis/redis.conf

通過 /daemonize  查找到屬性,默認是no,更改為yes即可。 (通過/關鍵字查找出現多個結果則使用 n字符切換到下一個即可,查找到結果后輸入:noh退回到正常模式)

如下圖:

 

 

 其他兩個屬性也是同樣方式查找和編輯即可。

 查看Redis是否正在運行

1、采取查看進程方式

1
ps -aux | grep redis

結果如下圖:

 

 

2、采取端口監聽查看方式

1
netstat -lanp | grep 6379

結果如下圖:

 

 

redis-cli

redis-cli是連接本地redis服務的一個命令,通過該命令后可以既然怒redis的腳本控制台。如下圖

輸入exit可以退出redis腳本控制台

關閉運行中的Redis服務

輸入redis-cli 進入控制台后輸入命令shutdown即可關閉運行中的Redis服務了。如下圖:

遠程連接不上問題

如下圖,已經開放了Redis服務的ip不為127.0.0.1,理論上遠程客戶端應該可以連接了,而且雲服務器的端口號也在安全組里開放了。

 

 

后面發現是啟動命令的問題,因為我比較偷懶,啟動redis我都是直接輸入命令
redis-server 或 redis-server& 這兩種方式都是直接讀取默認的配置文件啟動,無非前者是顯示啟動后者是作為后台應用啟動。我其實也很納悶,因為我修改的就是默認的配置文件啊,我並沒有重新生成新的配置文件,但是確實我輸入命令 redis-server /usr/local/redis/etc/redis.conf 就是能成功,而且我輸入命令redis-server& /usr/local/redis/etc/redis.conf也是遠程登錄失敗。
關於直接輸入redis-server不行的問題我還懷疑是不是Linux緩存問題,我重啟服務器嘗試下。結果還是一樣的。。。哎先不糾結了 后續再去找原因吧

 

 
分類:  運維
標簽:  RedisLinux


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM