1. 程式人生 > 實用技巧 >redis環境的安裝

redis環境的安裝

Redis環境的安裝(原始碼安裝),主要分為單機安裝與叢集安裝,無論是單機安裝還是叢集安裝,Redis本身的依賴是必須要有的,本文所採用的Redis版本是redis-5.0.3,所需要的依賴如下:

cpp-4.8.5-36.el7.x86_64.rpm
gcc-4.8.5-36.el7.x86_64.rpm
glibc-2.17-260.el7.x86_64.rpm
glibc-common-2.17-260.el7.x86_64.rpm
glibc-devel-2.17-260.el7.x86_64.rpm
glibc-headers-2.17-260.el7.x86_64.rpm
kernel-headers-3.10.0-957.1.3.el7.x86_64.rpm
libgcc-4.8.5-36.el7.x86_64.rpm
libgomp-4.8.5-36.el7.x86_64.rpm
libmpc-1.0.1-3.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm

  

其中,在安裝時可以檢視對應的依賴是否已經安裝,檢視方式rpm –qa |grep {rpmName}。

檢查完依賴,如果依賴不存在,則進行安裝,如果安裝過程中出現依賴安裝不上,可執行rpm –Uvh {rpmName} –-nodeps –force命令進行安裝。

單節點環境安裝:

解壓壓縮包, tar zxvf redis-5.0.3.tar.gz -C /opt/sourceware/目錄下;
進入目錄編譯:cd /opt/sourceware/redis-*
編譯:make
進入src目錄進行安裝:make install
修改redis配置檔案redis.conf:
bind地址修改為實際地址;
將daemonize屬性修改為yes(表名在後臺執行)
port埠修改;
protected-mode修改為no(關閉保護模式) requirepass密碼設定 啟動redis:redis-server & 進入客戶端:redis-cli 重啟:redis-cli shutdown

叢集環境安裝:叢集環境採用redis本身叢集機制,建議採用3+臺機器,具體如下:

環境規劃:

機器1:192.168.1.1:8001192.168.1.1:8002
機器2:192.168.1.1:8003192.168.1.1:8004
機器3:192.168.1.1:8004192.168.1.1:8006

應用安裝:

解壓壓縮包, tar zxvf redis-5.0.3.tar.gz -C /opt/sourceware/目錄下;
進入目錄編譯:cd 
/opt/sourceware/redis-* 編譯:make 進入src目錄進行安裝:make install 每臺編譯安裝結束之後,在安裝目錄建立叢集目錄: 機器1:mkdir –p /opt/sourceware/redis-*/ redis_cluster/8001/ 機器1:mkdir –p /opt/sourceware/redis-*/ redis_cluster/8002/ 機器2:mkdir –p /opt/sourceware/redis-*/ redis_cluster/8003/ 機器2:mkdir –p /opt/sourceware/redis-*/ redis_cluster/8004/ 機器3:mkdir –p /opt/sourceware/redis-*/ redis_cluster/8005/ 機器3:mkdir –p /opt/sourceware/redis-*/ redis_cluster/8006/ 並將對應的redis.conf檔案copy到redis_cluster/800*/中

修改其中的資訊:

port  8001 //埠按規劃修改
bind 本機ip  //預設ip為127.0.0.1 需要改為其他節點機器可訪問的ip 否則建立叢集時無法訪問對應的埠,無法建立叢集
daemonize    yes   //redis後臺執行
pidfile  /var/run/redis_8001.pid   //pidfile檔案對應8001
cluster-enabled  yes  //開啟叢集  把註釋#去掉
cluster-config-file  nodes_8001.conf   //叢集的配置  配置檔案首次啟動自動生成 8001
cluster-node-timeout  15000                //請求超時  預設15秒,可自行設定
appendonly  yes                           //aof日誌開啟  有需要就開啟,它會每次寫操作都記錄一條日誌 

建立叢集:

redis-cli --cluster create 192.168.1.1:8001 192.168.1.1:8002 192.168.1.2:8003 192.168.1.2:8004 192.168.1.3:8005 192.168.1.3:8006 --cluster-replicas 1

建立成功後,啟用節點密碼及叢集密碼,密碼須一致,修改redis.conf

masterauth passwd123

requirepass passwd123

重啟redis應用,並檢查叢集狀態:

執行:redis-cli -c -p 8001 -h 127.0.0.1 
執行:cluster info
執行:cluster nodes

redis開機自啟:編寫redis指令碼

#!/bin/bash

# chkconfig: 2345 80 90

#

# Simple Redis init.d script conceived to work on Linux systems

# as it does use of the /proc filesystem.

 

REDIS_PORT1=8001

REDIS_PORT2=8002

HOST_IP=192.168.1.1

PASS_WORD=Pass@2020

 

BIN_DIR=/usr/local/bin

COF_DIR=/opt/sourceware/redis-5.0.3/redis_cluster

 

SER_EXEC=$BIN_DIR/redis-server

CLI_EXEC=$BIN_DIR/redis-cli

 

PID_FILE1=/var/run/redis_${REDIS_PORT1}.pid

PID_FILE2=/var/run/redis_${REDIS_PORT2}.pid

 

CONF1=$COF_DIR/${REDIS_PORT1}/redis.conf

CONF2=$COF_DIR/${REDIS_PORT2}/redis.conf

 

case "$1" in

    start)

        if [ -f $PID_FILE1 ]

        then

            echo "$PID_FILE1 exists, process is already running or crashed"

        else

            echo "Starting Redis cluster server..."

           cd $COF_DIR/${REDIS_PORT1}

            $SER_EXEC $CONF1 &

            echo "啟動成功..."

        fi

      

       if [ -f $PID_FILE2 ]

        then

            echo "$PID_FILE2 exists, process is already running or crashed"

        else

            echo "Starting Redis cluster server..."

           cd $COF_DIR/${REDIS_PORT2}

            $SER_EXEC $CONF2 &

            echo "啟動成功..."

        fi

        ;;

    stop)

        if [ ! -f $PID_FILE1 ]

        then

            echo "$PID_FILE1 does not exist, process is not running"

        else

            PID=$(cat $PID_FILE1)

           echo "Stopping ..."

           $CLI_EXEC -p $REDIS_PORT1 -h $HOST_IP -a $PASS_WORD shutdown

           while [ -x /proc/${PID} ]

           do

              echo "Waiting for Redis cluster to shutdown ..."

              sleep 1

           done

           echo "Redis cluster stopped"

        fi

      

       if [ ! -f $PID_FILE2 ]

        then

            echo "$PID_FILE2 does not exist, process is not running"

        else

           PID=$(cat $PID_FILE2)

           echo "Stopping ..."

           $CLI_EXEC -p $REDIS_PORT2 -h $HOST_IP -a $PASS_WORD shutdown

           while [ -x /proc/${PID} ]

           do

              echo "Waiting for Redis cluster to shutdown ..."

              sleep 1

           done

           echo "Redis cluster stopped"

        fi

        ;;

    *)

        echo "Please use start or stop as first argument"

        ;;

esac

安裝指令碼:

1.將該檔案放在/etc/init.d/目錄下
2.修改該檔案中的埠、IP、密碼
3.執行:chkconfig --add redis
4.執行:chkconfig redis on
5.驗證:service redis start|stop

附帶常用命令:

redis-cli -c -p 8001 -h 127.0.0.1 -a Password@2020
cluster nodes
cluster info
redis-cli -a Password@2020 --cluster check ip:port
redis-cli -a Password@2020 --cluster fix ip:port
redis-cli -a Password@2020 --cluster add-node ip:port