02. Install redis on Linux

ZJiQi發表於2019-02-20
shell>wget http://download.redis.io/releases/redis-3.2.6.tar.gz  #  這裡版本讀者應該已官方最新stable版本為準
  • Notice:我使用的安裝目錄是/ghca/redis ; 使用的版本是3.2.6; 下文提到的有關目錄和版本,請讀者已自己實際目錄和版本替換。
  • 解壓編譯安裝:
shell>tar zxf redis-3.2.6.tar.gz
shell>cd redis-3.2.6
shell>make
這是二進位制程式已經編譯到了src目錄下,啟動redis-server可以直接就執行其二進位制檔案,也可以對啟進行make install 安裝,將可執行程式移到指定安裝目錄下
shell>make install PREFIX=/ghca/redis
這一步將redis相關二進位制可執行程式安裝到/ghca/redis
shell>cd /ghca/redis
shell>mkdir log etc #建立日誌和配置目錄
shell>mkdir data    #建立rdb和dump檔案存放目錄
  • 系統級配置修改 (修改配置這一步,可以到啟動redis-server後,按照日誌報警提示對應修改)
shell>sysctl vm.overcommit_memory=1
      • 2)檢視cat /sys/kernel/mm/transparent_hugepage/enabled,如果不是[never] 那麼執行,如列印“[always] madvise never“則執行:
shell>echo never >/sys/kernel/mm/transparent_hugepage/enabled
shell>cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
還要將echo 命令加入到 /etc/rc.local 為了在重啟設定
shell>vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
      • 3)tcp backlog設定,預設配置是511,如果啟動是日誌有警告warn 則需要修改系統/proc/sys/net/core/somaxconn的值為511
shell>echo 511 >/proc/sys/net/core/somaxconn
    • 作業系統最好還是設定swap
  • 建立配置檔案,從原始碼中賦值配置模板,在配置模板基礎上修改。具體配置內容參見《03.Redis-配置檔案》
將原始碼資料夾下的配置檔案複製到安裝目錄下的配置檔案目錄
shell>cd etc
shell>cp <原始碼路徑>/redis.conf /ghca/redis/etc/
相關配置介紹說明(可以略過):
1)然後根據需求修改相應配置,不過要redis在後臺執行,general 模組的第一個directive: daemonize no 要修改為daemonize yes
2)3.2.6版本多了安全模式配置,預設是開啟安全模式,開啟安全模式是一層保護redis的措施,如果:沒有明確指定bind配置或者沒有password配置,redis就會在安全模式下執行。redis只會接受連線來自IPV4 IPV6的loopback地址(127.0.0.1)和unix domain sockets 的連線。
3)tcp-keepalived 顧名思義:redis是tcp協議,為了保證client與redis-server之間活起的,該配置會讓redis-server一定週期向client傳送一個acks,可配置tcp-keepalived為0 要求沒那麼嚴格的話。
4)有關snapshot-映象快照:save <seconds> <changes>  時間和次數 兩個維度條件滿足,那麼就做一次snapshot。save的策略可以有多個,因為有時間這個維度的參與,時間到了滿足個數的條件就執行。 這個時間起始計數應該是一次changed的開始吧??,不要快照就註釋所有save。如果最後一次快照失敗,那麼redis會停止所有的對redis key的寫操作。這樣能夠讓adm知道出現了故障,否則就不會有人注意到災難的發生。如果後臺saving執行緒再次開始工作了,redis將自動允許寫操作。
5)複製replication:
6)網路配置
7)指定pid檔案,建立指定日誌檔案,日誌檔名最好跟上埠號
建立啟動指令碼,通過service 管理;
shell>cp <原始碼路徑>/utils/redis_init_start  /tmp/  # 注意redis更高的版本redis_init_start 檔名改為了redis_init_script,高版本的操作這個檔案即可
shell>修改/tmp/redis_init_start 或者 /tmp/redis_init_script
例項內容如下:
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
 
### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO
 
REDISPORT=6379   # 埠號,和配置檔案一致
REDIS_HOME=/ghca/redis  # redis安裝目錄
EXEC=$REDIS_HOME/bin/redis-server
CLIEXEC=$REDIS_HOME/bin/redis-cli
 
PIDFILE=/ghca/redis/redis.pid   # pid檔案路徑 和配置檔案中設定的路徑一致
CONF="$REDIS_HOME/etc/redis.conf"  # 配置檔案路徑
 
case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac
  
將啟動檔案複製到/etc/init.d/目錄下:如,sudo cp /tmp/redis_init_start /etc/init.d/redis_server  複製的service服務名可以自己定義,我這裡定義為redis_server;後面就可以使用service 啟停redis_server服務了。不要忘記,配置檔案redis.conf我們還沒修改,下一步就修改配置檔案了:
設定完啟動指令碼後,就要去設定配置檔案內容了,配置檔案內容參考《03. Redis-配置檔案》
  • 最後,新增redis 安裝目錄bin 到PATH中,”export PATH=/ghca/redis/bin:$PATH”  到~/.bashrc檔案最後。新增完成source ~/.bashrc 載入。
 

相關文章