下載Redis
解壓縮
tar -xzvf redis-5.0.7.tar.gz
編譯安裝
make和gcc依賴
可通過yum -y install gcc automake autoconf libtool make
命令安裝make和gcc等。
編譯及jemalloc依賴
系統可能缺少或因為發生奇怪的錯誤而提示缺少jemalloc庫,在jemalloc的GitHub地址中下載該庫然后替換到/deps/jemalloc/文件夾下。
然后在解壓后的redis文件夾下輸入make
,即可編譯。
也可以調用系統自帶的C庫進行編譯:make MALLOC=libc
。
編譯完成后輸入make install
即可將redis安裝
redis可執行文件如下:
有這幾個文件即可運行redis。
redis運行及哨兵模式配置
redis運行
redis-server為主程序,可通過執行redis-server redis.conf
命令來通過配置文件運行程序。
redis-cli為提供的客戶端程序,可通過客戶端對服務器進行測試。在使用cli客戶端時,可以使用info
等命令對服務器狀態進行查詢,還可以進行get/set測試。
redis-benchmark為測試程序,可對服務器性能進行測試。如redis-benchmark -n 10000 -q
redis-sentinel為哨兵程序,執行redis-sentinel sentinel.conf
即可通過配置文件執行哨兵程序。
單機及哨兵模式redis.conf配置
服務器配置
redis數據庫主程序可以通過redis.conf配置文件進行設置,配置文件中較為重要的項有下面幾項:
- bind 綁定本機IP地址,只有通過這個本機IP訪問的請求才可以連接到數據庫(限定自己的網卡入口而不是限定外部IP,比如只接受來自192.168.1.1這個網卡的鏈接)。默認監聽所有IP,可通過添加IP限定監聽地址。
- protected-mode 保護模式,當yes時只能接受bind地址的連接請求或密碼連接請求
- port 數據庫訪問端口,默認6379
- daemonize 是否后台運行
- pidfile 如果以后台模式啟動redis,程序會將自己的pid號寫入該文件
- logfile 默認是標准輸出輸出log,如果是后台模式,則需要指定log地址
- save redis是儲存在內存中的數據庫,同時也支持持久化操作,save就是指定儲存規則,save 900 1就是表示900秒內有1次數據改動則進行持久化操作,儲存到本地文件中。
- dbfilename 儲存到本地的rdb數據文件的名稱
- dir rdb文件儲存目錄,同時也是aof文件儲存目錄
- replicaof 在哨兵模式中,主服務器不開啟該項,從服務器開啟該項。參數為主服務器ip和端口
- masterauth 參數為主服務器密碼
- requirepass 主機連接時需要的密碼
哨兵配置
sentinel.conf配置文件可以配置哨兵進程。常用參數如下(許多都與redis.conf意義相同):
- bind及protected-mode 同redis服務器的bind
- port 哨兵進程所用端口
- daemonize 是否后台運行
- pidfile 如果以后台模式啟動redis,程序會將自己的pid號寫入該文件
- logfile 默認是標准輸出輸出log,如果是后台模式,則需要指定log地址
- dir 工作目錄
- sentinel myid 哨兵ID
- sentinel monitor 設置主服務器名,主服務器IP和端口,以及投票哨兵數
- sentinel down-after-milliseconds 多少毫秒沒有接到主服務器的反饋則認為是down了
- sentinel failover-timeout 客觀下線后執行failover的超時時間,超時則認為失敗
- sentinel auth-pass 參數為主服務器名和密碼
單機模擬哨兵模式腳本
需提前進行6個文件的配置,錯開redis主從服務器和哨兵服務器端口,設置好主服務器地址、端口、密碼和工作目錄等項。然后將6個程序放到同一目錄下,形成
master,slave1,slave2,sentinel1,sentinel2,sentinel3的並列的文件夾結構。
echo "啟動主服務器"
gnome-terminal -t "master" -x bash -c "./redis-master/redis-server ./redis-master/redis.conf;exec bash;"
echo "啟動從服務器"
gnome-terminal -t "slave1" -x bash -c "./redis-slave1/redis-server ./redis-slave1/redis.conf;exec bash;"
echo "啟動從服務器"
gnome-terminal -t "slave2" -x bash -c "./redis-slave2/redis-server ./redis-slave2/redis.conf;exec bash;"
echo "啟動哨兵服務器"
gnome-terminal -t "sentinel1" -x bash -c "./redis-sentinel1/redis-sentinel ./redis-sentinel1/sentinel.conf;exec bash;"
echo "啟動哨兵服務器"
gnome-terminal -t "sentinel2" -x bash -c "./redis-sentinel2/redis-sentinel ./redis-sentinel2/sentinel.conf;exec bash;"
echo "啟動哨兵服務器"
gnome-terminal -t "sentinel3" -x bash -c "./redis-sentinel3/redis-sentinel ./redis-sentinel3/sentinel.conf;exec bash;"
哨兵模式介紹
哨兵模式中,主服務器為可正常讀寫訪問服務器,從服務器從主服務器異步備份數據,哨兵監控主從服務器狀態。
當主服務器下線時,其監視的哨兵會觸發主觀下線,然后觸發哨兵投票,當半數以上哨兵投票認為服務器下線時,會觸發客觀下線,進行服務器切換,投票自動切換到從服務器提供數據庫服務。