Redis配置 安装Redis 准备 1 yum install -y gcc make wget tcl net-tools
创建目录
解压安装 1 2 3 4 5 6 cd /bigdata tar -zxvf redis-5.0.4.tar.gz [root@hadoop2 bigdata]# ls redis-5.0.4 redis-5.0.4.tar.gz cd redis-5.0.4
PREFIX 指定安装路径 1 make PREFIX=/bigdata/redis install
Redis单机 创建数据文件 1 2 3 4 mkdir -p /bigdata/redis/data mkdir -p /bigdata/redis/pid mkdir -p /bigdata/redis/logs mkdir -p /bigdata/redis/conf
复制配置文件 1 2 3 [root@redis redis]# pwd /root/redis [root@redis redis]# cp redis.conf /bigdata/redis/conf/
修改配置文件
主要修改以下配置项 1 2 3 4 5 protected-mode no daemonize yes # 以守护进程方式运行 pidfile /bigdata/redis/pid/redis.pid # PID文件位置 logfile /bigdata/redis/logs/redis.log # 日志文件位置 dir /bigdata/redis/data/ # 数据目录
如果需要远程访问,注释掉下面这行
启动: 单机模式 1 2 3 4 [root@hadoop1 redis]# bin/redis-server conf/redis.conf [root@hadoop2 redis]# ps -ef | grep redis root 71892 1 0 11:04 ? 00:00:00 bin/redis-server *:6379 root 72109 21049 0 11:04 pts/2 00:00:00 grep --color=auto redis
测试是否成功
如果返回 PONG 表示安装成功。
关闭服务
配置 Redis 服务 注意 如果要做哨兵集群或者完全集群,没必要配置 Redis 服务,可以在文件夹路径下写 shell 脚本来管理。
创建服务文件 1 2 touch /etc/systemd/system/redis.service vi /etc/systemd/system/redis.service
粘贴以下内容 根据实际路径调整:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [Unit] Description=Redis In-Memory Data Store After=network.target [Service] Type=forking ExecStart=/bigdata/redis/bin/redis-server /bigdata/redis/conf/redis.conf ExecStop=/bigdata/redis/bin/redis-cli shutdown PIDFile=/bigdata/redis/pid/redis.pid Restart=on-failure User=root Group=root [Install] WantedBy=multi-user.target
重新加载 Systemd 并启动 重新加载配置
启动 Redis
设置开机自启
检查状态
正常状态应显示 active (running)。
验证 检查 Redis 进程
测试连接 1 /bigdata/redis/bin/redis-cli ping
集群—主从 一主多从
最低: 1 写 3 读
主从,(高可用) 确保 写 宕机的时候 ,其中一个读 上线状态转移 成 写
为什么要3个, 因为只有2个没有办法做选举 ,造成 脑裂
清理之前的内容 1 2 3 4 5 6 7 8 9 10 11 12 [root@redis redis]# pwd /bigdata/redis [root@redis redis]# rm -fr data/* logs/* pid/* [root@redis redis]# ll data/ logs/ pid/ data/: 总用量 0 logs/: 总用量 0 pid/: 总用量 0
复制 1 2 3 4 5 6 [root@redis redis]# cd .. [root@redis bigdata]# mkdir sentinel [root@redis bigdata]# cp -r redis master [root@redis bigdata]# cp -r master slave2 [root@redis bigdata]# cp -r master slave3 [root@redis bigdata]# cp -r master slave4
修改参数 通用 1 2 3 4 port 7001 ~ 7004 pidfile logfile dir
非通用参数
1 2 # replicaof <masterip> <masterport> replicaof 127.0.0.1 7002 ~ 7004
路径(非通用参数) master : 7001 :
1 /bigdata/sentinel/master
replication: 7002 ~ 7004
1 /bigdata/sentinel/slave2 /bigdata/sentinel/slave3 /bigdata/sentinel/slave4
添加脚本 1 2 3 4 [root@redisMaster sentinel]# pwd /bigdata/sentinel [root@redisMaster sentinel]# touch start.sh [root@redisMaster sentinel]# touch stop.sh
start.sh 1 2 3 4 5 6 7 8 9 # !/bin/bash # 启动 Redis 实例 master/bin/redis-server master/conf/redis.conf & slave2/bin/redis-server slave2/conf/redis.conf & slave3/bin/redis-server slave3/conf/redis.conf & slave4/bin/redis-server slave4/conf/redis.conf & echo "Redis 实例已启动"
stop.sh 1 2 3 4 master/bin/redis-cli -p 7001 shutdown master/bin/redis-cli -p 7002 shutdown master/bin/redis-cli -p 7003 shutdown master/bin/redis-cli -p 7004 shutdown
注意 常见错误 脚本文件包含 Windows 换行符(\r\n
) ,而 Linux 系统只接受 Unix 换行符(\n
)
解决方案 1 [root@redisMaster sentinel]# vim/vi start.sh
在 vim/vi 中执行
执行 1 2 3 4 5 [root@redis sentinel]# chmod 755 start.sh [root@redis sentinel]# chmod 755 stop.sh [root@redis sentinel]# ./start.sh [root@redis sentinel]# ./stop.sh
手动选举 如果 master 宕机 , 可以从 salve 2 3 4 中选举一台,手动设置成 master, 假设是salve 3(7003)
1 2 [root@redis sentinel]# cd master [root@redis master]# bin/redis-cli -h localhost -p 7003
进入后在 7003 节点的redis中执行 replicaof no one
即可
1 2 7003 : replicaof no one 7002 7004 : replicaof 127.0.0.1 7003
哨兵集群 概念 通过哨兵(工具 )实现主从,而无需自己手动选举
监控 master 什么时候宕机
故障转移 当 master 宕机的时候,设置新的 master
配置 从解压的redis 包中找到 sentinel.conf
1 2 3 4 5 6 daemonize yes pidfile "/bigdata/sentinel/redis-sentinel.pid" logfile "/bigdata/sentinel/redis-sentinel.log" sentinel monitor mymaster 127.0.0.1 7001 1 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000
启动 1 master/bin/redis-sentinel sentinel.conf
实验 关闭 7001 发现 7004 转成 master 了
注意:此时
1 2 3 sentinel monitor mymaster 127.0.0.1 7001 1 转为了 sentinel monitor mymaster 127.0.0.1 7004 1
缺点:只有一个写, 写瓶颈
完全集群 概念 cluster
3主 3 从 (最低三从),必须是奇数个服务器 ,防止脑裂
解析
配置 配置文件要修改的
1 2 3 4 port 8001-8006 pidfile logfile dir
集群
1 2 cluster-enabled yes cluster-config-file nodes(port).conf
每个文件都要修改6项内容
启动 建立集群同时指定 集群的 master 和 slave
1 2 3 4 5 6 7 8 redis1/bin/redis-cli --cluster create \ 127.0.0.1:8001 \ 127.0.0.1:8002 \ 127.0.0.1:8003 \ 127.0.0.1:8004 \ 127.0.0.1:8005 \ 127.0.0.1:8006 \ --cluster-replicas 1
启动的时候 yes
默认前三个是主,后三个是从
启动脚本 1 2 3 4 5 6 redis1/bin/redis-server redis1/conf/redis.conf redis2/bin/redis-server redis2/conf/redis.conf redis3/bin/redis-server redis3/conf/redis.conf redis4/bin/redis-server redis4/conf/redis.conf redis5/bin/redis-server redis5/conf/redis.conf redis6/bin/redis-server redis6/conf/redis.conf
停止脚本 1 2 3 4 5 6 redis1/bin/redis-cli -p 8001 shutdown redis1/bin/redis-cli -p 8002 shutdown redis1/bin/redis-cli -p 8003 shutdown redis1/bin/redis-cli -p 8004 shutdown redis1/bin/redis-cli -p 8005 shutdown redis1/bin/redis-cli -p 8006 shutdown
连接 访问集群:记住加 -c ,以集群的方式连接
1 redis1/bin/redis-cli -c -p 8001
1 2 3 4 5 6 7 127.0.0.1:8001> set name admin -> Redirected to slot [5798] located at 127.0.0.1:8002 OK 127.0.0.1:8002> set age 20 -> Redirected to slot [741] located at 127.0.0.1:8001 OK 127.0.0.1:8001>
单机和集群的区别 单机模式下有16个索引,集群模式下没有索引,只有一个默认的。