一、離線部署redis
由於博主部署的虛擬機沒有網絡也沒有gcc編譯器,所以就尋找具備gcc編譯器的編譯環境把redis編譯安裝好,Copy Redis安裝目錄文件夾到目標虛擬機的目錄下。copy時redis-sentinel文件要先復制到安裝目錄外的其他目錄,才能復制到編譯環境外部,直接從安裝目錄復制到編譯環境外會失敗。
1.1 環境
l Linux-EulerOS_CSP_19.1.0.B068
l Redis-3.0.7.tar.gz
l 虛擬機無網絡連接
1.2 依賴
l 依賴gcc3.4.3編譯Redis-3.0.7.tar.gz解壓包。可用 gcc -v 命令檢測安裝環境是否安裝了gcc。
1.3 工具
l WinSCP;主機window和虛擬機linux之間的文件傳輸
l Vim:編輯redis.conf
l Putty:遠程登陸虛擬機
1.4 安裝步驟(安裝目錄以個人目錄為准)
l Copy Redis-3.0.7.tar.gz : 虛擬機無網絡,主機下載Redis-3.0.7.tar.gz,使用WinSCP傳輸到編譯環境的安裝目錄/opt/z00475942/
l 解壓源碼Redis-3.0.7.tar.gz
l 結果:生成並解壓到./redis-3.0.7目錄,這個目錄是自動生成的。
l 進入解壓目錄進行編譯(依賴gcc)
l 編譯結果
l 安裝到指定目錄/opt/z00475942/redis,路徑需為絕對路徑
l 安裝目錄下的文件,redis-server是服務端,redis-cli是客戶端
l Copy redis.conf 到安裝目錄, redis.conf在redis源碼目錄
l 使用vim打開redis.conf vim ./redis.conf 編輯cong文件, 設置daemonize 值為 yes 則redis可后台運行。
l 啟動時可能遇到無權限的提示:需要設置啟動文件至最高權限
l 啟動Redis 1- ./redis-server(前端啟動不讀取配置文件,虛擬機關閉則關閉)
2- ./redis-server /usr/local/redis/bin/redis.conf(后端啟動讀取配置文件啟動,虛擬機關閉仍后台運行,前提是已設置redis.conf 文件中 daemonize 值為 yes)
l 查看后台運行的redis
l 查看監聽6379(默認端口)的程序
l 結束后台運行的redis,查看后台運行的redis為空。
1.6 Redis.conf 詳解
l Include:引入其它配置文件。比如說當你有多個server,而有一些配置項是它們公用的,那么你可以將這些公用的配置項寫進一個配置文件common.conf里,然后這些server再include這個配置文件,這些server自己的配置項則分別寫在自己的配置文件里。
l bind:默認情況下,redis 在 server 上所有有效的網絡接口上監聽客戶端連接。如果只想讓它在一個或多個網絡接口上監聽,那你就綁定一個IP或者多個IP。多個ip空格分隔即可。
l protected-mode:當開啟后,禁止公網訪問redis。它啟用的條件有兩個,第一是沒有使用bind,第二是沒有設置訪問密碼。
l daemonize: [yes]redis以守護線程運行,這時redis instance會將進程號pid寫入默認文件/var/run/redis.pid。;[no]前端模式啟動,ssh啟動的命令窗口關閉則redis-server程序結束。
l pid:當redis以守護線程運行時,它會把 pid 默認寫到/var/run/redis.pid 文件里面,但是你可以在這里自己制定它的文件位置。
l port:監聽端口號,默認為 6379,如果你設為 0 ,redis 將不在 socket 上監聽任何客戶端連接。
l tcp-backlog: 此參數確定了TCP連接中已完成隊列(完成三次握手之后)的長度,當然此值必須不大於Linux系統定義的/proc/sys/net/core/somaxconn值,默認是511,而Linux的默認參數值是128。當系統並發量大並且客戶端速度緩慢的時候,可以將這二個參數一起參考設定。
l loglevel:日志級別。可選項有:debug(記錄大量日志信息,適用於開發、測試階段); verbose(較多日志信息); notice(適量日志信息,使用於生產環境);warning(僅有部分重要、關鍵信息才會被記錄)。
l logfile:日志文件的位置,當指定為空字符串時,為標准輸出,如果redis已守護進程模式運行,那么日志將會輸出到 /dev/null 。
l save:保存數據到磁盤。格式是:save <seconds> <changes> ,含義是在 seconds 秒之后至少有 changes個keys 發生改變則保存一次。
l databases:設置數據庫的數目。默認的數據庫是DB 0 ,可以在每個連接上使用select <dbid> 命令選擇一個不同的數據庫,dbid是一個介於0到databases - 1 之間的數值。
l dir:數據庫存放目錄。必須是一個目錄,aof文件也會保存到該目錄下。
l maxclients:設置客戶端最大並發連接數,默認無限制,Redis可以同時打開的客戶端連接數為Redis進程可以打開的最大文件描述符數-32(redis server自身會使用一些),如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤信息。
l maxmemory:指定Redis最大內存限制,Redis在啟動時會把數據加載到內存中,達到最大內存后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理后,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放內存,Value會存放在swap區,格式:maxmemory <bytes> 。
l maxmemory-policy:當內存使用達到最大值時,redis使用的清楚策略。有以下幾種可以選擇
1)volatile-lru 利用LRU算法移除設置過過期時間的key
(LRU:最近使用 Least Recently Used )
2)allkeys-lru 利用LRU算法移除任何key
3)volatile-random 移除設置過過期時間的隨機key
4)allkeys-random 移除隨機key
5)volatile-ttl 移除即將過期的key(minor TTL)
6)noeviction noeviction 不移除任何key,只是返回一個寫錯誤。默認選項
l timeout:當客戶端閑置多少秒后關閉連接,如果設置為0表示關閉該功能。
l tcp-keepalive:單位是秒,表示將周期性的使用SO_KEEPALIVE檢測客戶端是否還處於健康狀態,避免服務器一直阻塞,官方給出的建議值是300S