#!/bin/bash
# Redis Auto install 2016.1109
current_time=`date +%Y%m%d-%H%M`
redis_setup_dir="/opt/redis/"
redis_version="redis-3.2.6"
redis_source_code="/tmp/${redis_version}.tar.gz"
redis_source_code_unzip_dir="/tmp/${redis_version}/"
url="http://download.redis.io/releases/${redis_version}.tar.gz"
yum -y install gcc wget
cd /tmp/
rm -rf ${redis_version}
wget $url
tar zxf ${redis_source_code}
cd ${redis_source_code_unzip_dir} && make
make PREFIX=${redis_setup_dir} install
mv ${redis_setup_dir}bin/* ${redis_setup_dir}
rmdir ${redis_setup_dir}bin/
\cp -f ${redis_setup_dir}redis-cli /usr/bin/
cat >>${redis_setup_dir}redis.conf << EOF
# Redis configuration file example
daemonize yes
protected-mode no
pidfile "/var/run/redis.pid"
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile "${redis_setup_dir}redis.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
requirepass "password"
masterauth "password"
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "${redis_setup_dir}"
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 8192000000
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
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
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
EOF
if [ -e /etc/redis.conf ]
then
mv /etc/redis.conf /etc/redis.conf.$current_time
ln -s ${redis_setup_dir}redis.conf /etc/redis.conf
else
ln -s ${redis_setup_dir}redis.conf /etc/redis.conf
fi