CentOS 6.9 redis安裝與基本配置(上)
使用下面的命令進行更新yum源並安裝redis服務:
yuminstall -y redis
serviceredis start
chkconfigredis on
安裝好之後,我們發現一個比較奇怪的問題(不確定是否與Redis版本有關,CentOS 7.4上沒遇到類似問題):
我們檢視redis服務狀態:
但是我們檢視redis服務埠偵聽情況:
可以看到redis服務是正常偵聽的,而且本地使用redis-cli也是可以連線的:
瞭解了一下,發現serviceredis status實際上是去呼叫/etc/init.d/redis這個指令碼檔案的status方法的,我們看一下
#!/bin/sh …… name="redis-server" exec="/usr/bin/$name" shut="/usr/libexec/redis-shutdown" pidfile="/var/run/redis_6379.pid" REDIS_CONFIG="/etc/redis.conf" …… start() { [ -f $REDIS_CONFIG ] || exit 6 [ -x $exec ] || exit 5 echo -n $"Starting $name: " daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG --daemonize yes --pidfile $pidfile" retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } …… rh_status() { status -p $pidfile $name } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 restart ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}" exit 2 esac exit $? |
我們看到,在呼叫redisstatus引數的時候,會呼叫rh_status這個方法,這個方法實際上是去檢查pid檔案。我們再看一下,start方法中,會呼叫/usr/bin/redis-server這個執行檔案,對應生成一個pid檔案,看到有一個daemonize引數,去redis配置檔案檢視這個引數以及pid檔案的路徑:
可以看到預設redis是以daemon的方式執行的,但是配置檔案中pid檔案的路徑和/etc/init.d/redis指令碼檔案中的路徑不一致,所以我們嘗試修改一下指令碼中pid檔案路徑:pidfile="/var/run/redis.pid"
再次嘗試重啟服務發現仍然不行,檢視/var/run下面根本沒有生成redis的pid檔案:
這就奇怪了,難道redis沒有建立目錄的許可權?那我們手工建立一個/var/run/redis目錄,然後給redis使用者賦一個許可權:
再次嘗試一下重啟服務,這下正常了: