基本模式
- 下载安装包
wget http://download.redis.io/releases/redis-6.2.1.tar.gz
- 解压到
tar -zxvf redis-6.2.1.tar.gz -C /opt/module
- 因为redis是c/c++ 编写,所以需要c的运行环境,安装tcl
yum -y install gcc-c++
yum -y install tcl
- 编译redis: 默认安装到/usr/local/bin下面
主要命令: make: 编译 make install : 安装
cd /opt/module/redis-6.2.1/
#或者使用命令 make 进行编译
make MALLOC=libc
make test && make install PREFIX=/opt/module/redis-6.2.1 // 编译安装到此目录
- 修改 redis.conf 文件
vim redis.conf
bind 127.0.0.1 //将此行进行注释掉, 进行远程连接
protected-mode no // 将远程保护取消 no ,可以进行远程连接
daemonize yes == // 允许后台允许 yes ==
logfile “/opt/module/redis-3.2.8/log/redis.log” // 日志存放路径
dir /opt/module/redis-3.2.8/data // 数据存放路径
- 启动redis
redis-server redis.conf 启动
redis-cli -h localhost -p 6379 客户端进行连接
redis-cli shutdown 优雅的关闭
ps aux | grep redis 查看redis进程的启动
主从复制模式
介绍: 主从复制模式,主要是将读写能力进行分开,分担单个服务器的压力,提高性能,也可以做容灾处理
复制原理: slave连接上master之后,就会发送同步的命令来进行传输数据文件.
-
设置多个不同端口的redis服务器进行启动:
配置文件模板 :
include /opt/module/redis-6.2.1/myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb -
使用命令启动之后
info replication : 打印主从服务器的详细信息
slaveof ip地址 端口号 : 成为某个实例的从服务器,将其联系起来
slaveof no one : 将从服务器变成主服务器
到这里就可以完成基本的配置了
-
注意
- 服从规则: 主服务器用来进行读写, 而从服务器只能用来进行读操作 -
常用的3种方式:
4.1 一主二仆
4.2 薪火相传 :当中间的slave宕机之后,后面的都全部不管用了
4.3 反客为主 :
-
哨兵模式: 其实就是反客为主模式的升级版,升级为自动的了
5.1 创建sentinel.conf
文件,名字不能出错,添加上下面内容sentinel monitor mymaster 主服务器ip 端口号 1
解释: 其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。5.2 启动执行 : redis-sentinel sentinel.conf
5.3 这个时候就完成了, 如果主服务器宕机的话, 等待10几秒, 新的主服务器会往从服务器种找到规则 :
- 根据 优先级别 : slave-priority 数字越小越优先
- 根据偏移量
- 根据runid
解释:
优先级在redis.conf中默认:slave-priority 100,值越小优先级越高
偏移量是指获得原主机数据最全的
每个redis实例启动后都会随机生成一个40位的runid
5.4 缺点:复制延时
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
redis集群启动
优点:
实现扩容
分摊压力
无中心化集群配置简单
搭建规则: 修改为6个服务器 3主3从规模的
第一步:修改配置文件 : 6个文件都要配置, 端口号和文件名称要注意
include /home/bigdata/redis.conf
port 6379
pidfile “/var/run/redis_6379.pid”
dbfilename “dump6379.rdb”
dir “/home/bigdata/redis_cluster”
logfile “/home/bigdata/redis_cluster/redis_err_6379.log”
cluster-enabled yes # 允许使用集群
cluster-config-file nodes-6379.conf # 修改名称
cluster-node-timeout 15000 #超时时间
第二步: 将6个服务器合并成一个集群
先进入到 redis/src下: 进行执行
redis-cli --cluster create --cluster-replicas 1 192.168.11.101:6379 192.168.11.101:6380 192.168.11.101:6381 192.168.11.101:6389 192.168.11.101:6390 192.168.11.101:6391
解释:
此处不要用127.0.0.1, 请用真实IP地址
–replicas 1 采用最简单的方式配置集群,一台主机,一台从机,正好三组。
配置完成!
命令操作:
redis-cli -c -p 6379 #使用-c集群客户端连接
cluster nodes # 查看集群信息
插槽(slots):
将操作的key 进行计算出一个具体的插槽值, 每个主服务器都分配自己对应到的插槽范围, 根据key计算的值进行分配数据到集群存储 .
如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续?
如果某一段插槽的主从都挂掉,而cluster-require-full-coverage
为yes
,那么 ,整个集群都挂掉
如果某一段插槽的主从都挂掉,而cluster-require-full-coverage
为no
,那么,该插槽数据全都不能使用,也无法存储。