1.安装第一个redis实例
#查看已安装的redis版本
/usr/local/redis/bin/redis-server -v
#yum查看redis各版本
yum search --showduplicates redis
1. yum install -y gcc
2.该机器如果创建2个redis实例(redis、redis1),则先指定每个实例的log位置,并赋予写权限
mkdir /data1/redis/log -p
touch /data1/redis/log/redis.log
chmod 766 /data1/redis/log/redis.log
mkdir /data1/redis1/log -p
touch /data1/redis1/log/redis1.log
chmod 766 /data1/redis1/log/redis1.log
3.下载redis并解压
mkdir /data1/software
wget -P /data1/software http://download.redis.io/releases/redis-3.0.7.tar.gz
cd /data1/software
tar -zxvf redis-3.0.7.tar.gz
cd /data1/software/redis-3.0.7
#编译,然后安装到/usr/local目录下
make
make install PREFIX=/usr/local/redis
4.创建软连接
ln -s /usr/local/redis/bin/redis-server /usr/bin/redis-server
5.修改redis每个实例的配置文件/usr/local/bin/redis.conf
daemonize yes pidfile /var/run/redis.pid #多实例要修改不同名称,最好是放到/data1/redis目录下,这样方便赋权 bind 0.0.0.0 port 6379 unixsocket /tmp/redis.sock #多实例要修改不同名称,最好放到/data1/redis目录下,方便赋权 timeout 0 tcp-keepalive 0 databases 16 loglevel warning logfile /data1/redis/log/redis.log #多实例要修改不同名称 dbfilename dump.rdb dir /data1/redis/data #多实例要修改不同名称
#redis cluster启用 cluster-enabled yes cluster-config-file /usr/local/redis/cluster/nodes.conf cluster-node-timeout 15000 cluster-migration-barrier 1 cluster-require-full-coverage yes appendonly no save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes maxmemory 6096mb maxclients 30000 appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 1024 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes
6.新建redis开机自启动脚本/etc/init.d/redis,注意修改配置文件位置及配置文件端口
chmod a+x /etc/init.d/redis
chkconfig redis on
/etc/init.d/redis内容如下,注意修改实例服务及配置文件路径
#!/bin/bash #chkconfig: 2345 55 25 #description: Starts,stops and restart the redis-server #usage: ./script_name {start|stop|status|restart} # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check networking is up. [ "$NETWORKING" = "no" ] && exit 0 RETVAL=0 REDIS="/usr/local/redis/bin/redis-server" PROG=$(basename $REDIS) CONF="/usr/local/redis/bin/redis.conf" if [ "$1" = "-f" ];then CONF=$2 fi if [ ! -f $CONF ]; then echo -n $"$CONF not exist.";warning;echo exit 1 fi REDIS_PORT=$(/bin/grep port ${CONF} | /bin/cut -d ' ' -f2) PID_FILE=$(/bin/grep "pidfile" ${CONF}|cut -d ' ' -f2) PID_FILE=${PID_FILE:=/var/run/redis.pid} LOCKFILE="/var/lock/subsys/redis-${REDIS_PORT}" if [ ! -x $REDIS ]; then echo -n $"$REDIS not exist.";warning;echo exit 0 fi start() { echo never > /sys/kernel/mm/transparent_hugepage/enabled echo -n $"Starting $PROG: " # $REDIS $CONF # su nobody -s "/bin/sh" -c "$REDIS $CONF" daemon --user nobody "$REDIS $CONF" RETVAL=$? if [ $RETVAL -eq 0 ]; then success;echo;touch $LOCKFILE else failure;echo fi return $RETVAL } stop() { echo -n $"Stopping $PROG: " if [ -f $PID_FILE ] ;then read PID < "$PID_FILE" else failure;echo; echo -n $"$PID_FILE not found.";failure;echo return 1; fi if checkpid $PID; then kill -TERM $PID >/dev/null 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ] ;then success;echo echo -n "Waiting for Redis to shutdown .." while checkpid $PID;do echo -n "." sleep 1; done success;echo;rm -f $LOCKFILE else failure;echo fi else echo -n $"Redis is dead and $PID_FILE exists.";failure;echo RETVAL=7 fi return $RETVAL } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) status -p ${PID_FILE} $PROG RETVAL=$? ;; *) #echo $"Usage: $0 {start|stop|status|restart}" echo $"Usage: $0 -f [redis configfile] {start|stop|status|restart}" RETVAL=1 esac exit $RETVAL