redis 的啟動方式
阿新 • • 發佈:2019-02-12
啟動redis 可以分為兩種模式
第一種 直接啟動 (適用於開發環境)
直接執行redis-server 直接啟動redis
redis-server
redis會使用預設埠6379
或者通過--port引數自定義埠號
redis-server -port --port 6300
第二種
通過初始化指令碼啟動redis指令碼,生產環境推薦使用,
在Redis原始碼目錄的utils 資料夾中有一個名為redis_init_script的初始化指令碼
具體內容如下:
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
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 -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
這時我們要配置redis的執行方式和持續化指令碼、日誌檔案的儲存位置等
(1)配置初始化指令碼。首先將初始化指令碼複製到/etc/init.d 目錄中,檔名為redis_埠號,其中埠號表示要讓redis監聽的埠號。客戶端通過該埠連線redis。然後修改指令碼的第6行的redisport變數的值為相同的埠號。
cp redis_init_script /etc/init.d/redis_init_script_6379
vim /etc/init.d/redis_init_script_6379
(2) 建立需要的資料夾。
/etc/redis 存放redis的配置檔案
/var/redis/ 埠號 存放redis 的持久化檔案
(3) 修改配置檔案。首先將配置檔案的模板複製到/etc/redis 目錄中,以埠號命名(6379.conf)
然後對部分引數進行編輯
cp /usr/local/src/redis-3.2.4/redis.conf /etc/redis/6379.conf
vim /etc/redis/6379.conf
需修改配置及說明
引數 值 說明
daemonize yes 使redis以守護程序執行
pidfile /var/run/redis_埠號。pid 設定redis的PID檔案位置
port 埠號 設定redis檢討的埠號
dir /var/redis/埠號 設定持久化檔案存放位置
配置:
vim
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
dir /var/redis/6379
使用/etc/init.d/redis_埠號 staer 啟動redis
/etc/init.d/redis_init_script_6379 start
停止 redis
停止redis
考慮到redis有可能正在將記憶體中的資料同步到硬碟中,強制終止redis程序可能導致資料丟失。正確的停止redis 的方式應該是向redis傳送SHUTDOWN 命令,方法為:
redis-cil shutdown
當redis收到SHUTDOWN 命令後,會先斷開所有客戶端連線。然後根據配置執行持久化,最後完成退出。
redis可以妥善處理SIGTERM訊號,所以使用"kill redis程序的PID" 也可以正常結束redis,效果和傳送 HUTDOWN 命令一樣。(但是不推薦使用)