安装依赖
yum install gcc-c++ -y
下载源码
cd /usr/local
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
编译安装
cd /usr/local
mv redis-5.0.8 redis
cd redis
mkdir data
make
修改配置文件
vim /usr/local/redis/redis.conf
#修改为 daemonize yes;守护进程,后台运行,除非手动kill进程
daemonize yes
#注释掉,否则无法远程连接redis服务
bind 0.0.0.0 #监听ip,多个ip用空格分隔
#设置密码
#masterauth 123456 #slave连接master密码,master可省略
requirepass 123456 #设置master连接密码,slave可省略
#指定Redis最大内存限制
maxmemory 4GB
#日志路径
logfile "/usr/local/redis/redis.log"
#数据库备份文件存放目录
dir /usr/local/redis/data
appendonly yes
启动redis
./bin/redis-server ./redis.conf
主从复制
- 手动修改配置文件
redis 5.0前:
slaveof 192.168.75.129 6379
redis 5.0后:
replicaof 192.168.75.129 6379
masterauth "sdmc@1234"
哨兵(sentinel)功能-----一主两从三哨兵
redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
- 修改sentinel.conf文件
# vim /usr/local/redis/sentinel.conf
daemonize yes
logfile "/usr/local/redis/sentinel.log"
dir "/usr/local/redis/sentinel" #sentinel工作目录
sentinel monitor mymaster 192.168.75.129 6379 2 #判断master失效至少需要2个sentinel同意,建议设置为n/2+1,n为sentinel个数
#最后一个参数为需要判定客观下线所需的主观下线sentinel个数,这个参数不可以大于sentinel个数
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000 #判断master主观下线时间,默认30s
- 启动sentinel
redis-sentinel sentinel.conf
redis集群
redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题,一个Redis集群包含16384个哈希槽,数据库中的每个数据都属于16384个哈希槽中的一个,集群使用公式CRC16(key)%16384来计算键key属于哪个槽,集群中的每一个节点负责处理一部分哈希槽。
- 修改配置文件redis.conf,其它类似:
# vim /usr/local/redis/cluster/redis_7002.conf
bind 192.168.30.128
port 7002
daemonize yes
pidfile "/var/run/redis_7002.pid"
logfile "/usr/local/redis/cluster/redis_7002.log"
dir "/data/redis/cluster/redis_7002"
#replicaof 192.168.30.129 6379
masterauth "123456"
requirepass "123456"
appendonly yes
cluster-enabled yes
cluster-config-file nodes_7002.conf
cluster-node-timeout 15000
- 安装集群工具
yum -y install ruby
- 复制redis-trib.rb到系统环境
cp /usr/local/redis/src/redis-trib.rb /usr/local/bin/redis-trib
-
启动集群三主三从
redis-cli --cluster create --cluster-replicas 1 -a sdmc@1234 192.168.75.128:6379 192.168.75.128:6380 192.168.75.129:6379 192.168.75.129:6380 192.168.75.130:6379 192.168.75.130:6380 -
客户端访问redis集群
注意:-p 端口号 -h 节点ip -c 自动重定向
redis-cli -p 6379 -h 192.168.75.128 -c
- 查看集群信息
cluster info
- 查看节点信息
cluster nodes
redis自重启
- 在/etc/init.d下新建redis文件
#!/bin/sh
#添加的两行注释内容如下:
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# 注释的意思是,redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10
##########################
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/soft/redis-6.2.6/src/redis-server
REDIS_CLI=/usr/local/soft/redis-6.2.6/src/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis.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
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
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文件授予执行权限
chmod +x /etc/init.d/redis
- 设定开机启动服务
sudo chkconfig redis on
- 检测是否成功
./redis start查询命令是否成功情况
reboot重启检测
重启后ps -ef |grep redis查看redis进程是否存在
- 添加自重启
chkconfig --add redis
- 查看自重启列表
chkconfig --list |grep redis