1. 程式人生 > >linux下安裝redis及其中遇到的問題的解決方法

linux下安裝redis及其中遇到的問題的解決方法

1.將下載好的壓縮包放到/usr/local目錄下
# tar xzf redis-3.0.2.tar.gz
# cd redis-3.0.2
# make
提示錯誤 make: cc: Command not found make: *** [adlist.o] Error 127
沒有安裝gcc環境,需要安裝gcc
# yum install gcc
安裝後檢查是否安裝成功
# rpm -qa |grep gcc
之後重新make
2.編譯完成後,在Src目錄下,有四個可執行檔案redis-server、redis-benchmark、redis-cli和redis.conf將其拷貝到一個目錄下。
# mkdir /usr/redis
# cp redis-server  /usr/redis
# cp redis-benchmark /usr/redis
# cp redis-cli  /usr/redis
# cp redis.conf  /usr/redis
# cd /usr/redis

3.啟動服務
# redis-server   redis.conf
提示錯誤 -bash :redis-server:command not found

建立軟連線
# ln -s /usr/redis/redis-server /usr/bin/redis-server
# ln -s /usr/redis/redis-cli /usr/bin/redis-cli
重新啟動
# redis-server /usr/redis/redis.conf

啟動成功

4.設定開機自啟動

 (1)先將redis.conf中daemonize設定為yes,確保守護程序開啟。

 (2)編寫開機自啟動指令碼

# vi /etc/init.d/redis

PATH=/usr/local/bin:/sbin:/usr/bin:/bin   
REDISPORT=6379  
EXEC=/usr/redis/redis-server   
REDIS_CLI=/usr/redis/redis-cli   
 
PIDFILE=/var/run/redis.pid   
CONF="/usr/redis/redis.conf"  
AUTH="1234"  

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   
                if [ "$?"="0" ]   
                then   
                        echo "Redis is running..."  
                fi   
                ;;   
        stop)   
                if [ ! -f $PIDFILE ]   
                then   
                        echo "$PIDFILE exists, process is not running."  
                else  
                        PID=$(cat $PIDFILE)   
                        echo "Stopping..."  
                       $REDIS_CLI -p $REDISPORT  SHUTDOWN    
                        sleep 2  
                       while [ -x $PIDFILE ]   
                       do  
                                echo "Waiting for Redis to shutdown..."  
                               sleep 1  
                        done   
                        echo "Redis stopped"  
                fi   
                ;;   
        restart|force-reload)   
                ${0} stop   
                ${0} start   
                ;;   
        *)   
               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  
                exit 1  
esac
注: redis設定AUTH命令
redis 127.0.0.1:6379> AUTH PASSWORD
(error) ERR Client sent AUTH, but no password is set
redis 127.0.0.1:6379> CONFIG SET requirepass "1234"
OK
redis 127.0.0.1:6379> AUTH 1234
Ok

(3)設定許可權
# chmod 755 redis
(4)啟動
# /etc/init.d/redis start  
提示錯誤 /etc/init.d/redis:permission denied

# chmod a+x /etc/init.d/redis
a+x 是給所有人加上可執行許可權,包括所有者,所屬組,和其他人
o+x 只是給其他人加上可執行許可權

重新啟動後顯示
Starting Redis server... 
Redis is running ...

(5)設定開機自啟動
# chkconfig redis on
提示錯誤 service redis does not support chkconfig

把下面兩行註釋放在/etc/init.d/redis檔案靠前的註釋中:

# chkconfig:   2345 90 10

# description:  Redis is a persistent key-value database

(6)關機重啟測試