redis自啟動配置詳解,redis啟動配置詳解

來源:互聯網
上載者:User

redis自啟動配置詳解,redis啟動配置詳解


一、概述1.1原理

redis自啟動的工作原理是怎麼樣的呢?Linux系統啟動後,會有一個程式去特定目錄下面掃描檔案,然後執行這些檔案,這些檔案可稱之為指令碼。所以,你可以把你的工作寫成一個指令碼,放到指定路徑下(etc/init.d)。所以,你要做的,就是把執行啟動redis執行個體的工作編寫成指令碼,讓Linux系統去給你執行即可。

1.2簡述

配置自啟動,大概需要三個步驟

1. 編輯執行個體對應的設定檔,同一台機器上,可以有啟動多個redis執行個體,所以對應著多個設定檔。同時每個執行個體有自己的工作路徑,如果共用工作路徑,那麼設定檔很多項目項要配置成不同,以免衝突,所以建議方法可以設定不同的工作路徑。

2.編輯一個自啟動指令碼,然後把指令碼複製到etc/init.d目錄下。因為Linux系統啟動後,會有一個程式自動去掃描這個路徑下的檔案,然後執行它們。

3.執行命令生效、測試。

二、編輯redis設定檔2.1設定檔命名

在redis目錄下有一個redis.conf檔案,複製一份,建議按連接埠名命名,如6379.conf,規則是,首先,需要與第三章中的指令碼裡面的配置一致,其次,不同執行個體對應不同的設定檔,不能搞混了,然後用vi對檔案進行編輯。

2.2編輯設定檔

以下把需要注意的項加以說明

 

首先把redis配置成值守進程,這樣redis運行後將在後台運行,如下:
daemonize yes

當以值守進程模式啟動並執行時候,redis sever把自己的pid寫入到預設檔案“/var/run/redis.pid”下,這裡,你需要自訂檔案名稱,幾個redis執行個體,不能弄成一樣,Linux系統是通過這個檔案來判斷一個進程是否運行與關閉,如下:
pidfile /var/run/redis_6379.pid
 
Redis執行個體用於接收用戶端串連的TCP監聽連接埠預設是6379,如果配置成0,將不會開啟TCP監聽服務。在此可自訂連接埠,此連接埠與後續的指令碼配置的相關項目需要一致。
port 6379
 
Redis server預設情況下是接收所有本伺服器所有網卡的請求,但是也可以通過指定IP來綁定網卡,可以綁定多個,用空格隔開,如下:
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1
 
存放快照檔案的檔案名稱,預設是dump.rdb,可以自訂檔案名稱,副檔名你就別動它了。如果你需要啟動多個redis執行個體,同時多個執行個體又共用同一個工作路徑,那麼此檔案名稱必須不一樣。
dbfilename dump.rdb

以上(第4節)只是設定的檔案名稱,而非路徑,通過命令dir可以指定路徑,檔案將按指定路徑與指定的檔案名稱儲存。同時AOF(Append Only File)也是參照此路徑的。多執行個體可以共用此路徑,如果共用工作路徑,那其他配置需要配置成不同,以防衝突,所以建議設定成不同工作路徑,這樣就避免了這些問題。

dir ./

 

指定輸入日誌資訊的檔案,如果為空白,將從標準輸出視窗輸出,同時又設定了守護進程模式的話,將會把日誌記錄到/dev/null。它只是檔案名稱,不包含路徑。
logfile ""

 

三、處理指令碼3.1複製指令碼

redis/utils目錄下有一個redis_init_script檔案,把它複製一份到etc/init.d路徑下,建議把檔案名稱改成與redis執行個體連接埠相關,如6379連接埠的這個指令碼名,在etc/init.d路徑下改成6379redisd。

3.2編輯指令碼

對2.1節複製到/etc/init.d路徑下的指令碼進行編輯,如下:

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.


# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database


REDISIP=localhost
REDISPORT=31001
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli


PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.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 -h $REDISIP -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


下面對以上指令碼進行說明

REDISPORT=6379

這應該只是定義的一個變數,現在裝用到它,建議redis執行個體用什麼連接埠,這個地方就配置什麼連接埠,如果一個伺服器多執行個體的話,這必須配置成不一樣。

 

EXEC=/usr/local/bin/redis-server

你的redis-server的路徑,如果你redis源碼編譯後執行過make install並成功後,redis-server在/usr/local/bin/路徑下將會有redis-server的連結,或者,以後配置需要直接配置成你redis-server所在的真實的路徑。

 

CLIEXEC=/usr/local/bin/redis-cli

redis-cli所在的路徑,由redis-server一樣,如果你redis源碼編譯後執行過make install並成功後,redis-cli在/usr/local/bin/路徑下將會有redis-cli的連結,或者,以後配置需要直接配置成你redis-cli所在的真實的路徑。這樣,在linux下可直接敲redis-cli命令,而不用指定路徑了,可以把它當成平常的命令來執行。

 

PIDFILE=/var/run/redis_${REDISPORT}.pid

這個是pid檔案路徑,當redis執行個體設定成值守模式(daemonize)後,啟動後會產生一個pid檔案,在哪裡產生,檔案名稱是什麼,需要在redis的config檔案裡配置。所以當你一個伺服器中有多個redis執行個體時,這個檔案名稱需要不一樣,不然會帶來麻煩。所以此配置項要與redis的設定檔裡面配置項一致,關於redis設定檔裡面的相關想,參見後續章節。

 

CONF="/usr/local/src/redis/${REDISPORT}.conf"

指定redis執行個體的設定檔的路徑,同伺服器不同的redis執行個體需要不同的設定檔,這個需要注意,不能弄成一樣的,不然啟動會有成功的。

指令碼的後續部分,可以不用管它,不需要修改。


添加項:

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

在指令碼的開頭第四行,即“# as it does use of the /proc filesystem.”的一行插入以上兩段代碼,不然,後面執行命令的時候,會提示許可權問題。

 

四、啟動生效

#設定為開機自啟動伺服器(redisd為/etc/init.d/目錄下剛才自己建立的指令碼名稱,下同)

chkconfig redisd on

#開啟服務,用於測試服務是否有效

service redisd start

#關閉服務

service redisd stop

#重啟系統,測試是否生效

reboot

系統重啟後,檢查redis執行個體是否如預期啟動

redis-cli –h 你設定的IP –p 你設定的連接埠

 

 

著作權聲明:本文為博主原創文章,如欲轉載請與博主聯絡,QQ:1148824289.

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.