redis的安装部署,主从复制,高可用以及集群管理

本文详细介绍Redis数据库的特性,包括其数据类型、原子性操作、主从同步机制,以及如何进行主从复制和配置高可用环境。文章还介绍了Redis Sentinel系统的工作原理,包括监控、提醒和自动故障迁移功能,并提供了创建和管理Redis集群的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis简介

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted
set
–有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

1.安装: redis-5.0.3

yum install gcc
tar zxf redis-5.0.3.tar.gz
cd redis-5.0.3/
make && make install
cd utils/
./install_server.sh

在这里插入图片描述
安装完成之后自动开启:

在这里插入图片描述
cat /etc/init.d/redis_6379

systemctl start redis_6379 
systemctl stop redis_6379 
systemctl status redis_6379 
systemctl restart redis_6379 

2.主从复制

做过mysql的主从复制,redis的主从复制超级简单.

master:

  vim /etc/redis/6379.conf 

在这里插入图片描述
slave:

 vim /etc/redis/6379.conf 

在这里插入图片描述
在这里插入图片描述
重启

systemctl restart redis_6379

测试:
master端写入
在这里插入图片描述
slave端查看
在这里插入图片描述注:slave端是同步master端的,所以slave端不可删除数据。

3.高可用

(1)配置主从
配置server4:master
配置server5/7:slave

(2)配置Redis Sentinel

Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
(1) 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
(2) 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
(3) 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多Sentinel 进程(progress),这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器.

虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动 Redis Sentinel 。

cd redis-5.0.3
cp sentinel.conf /etc/redis/
cd /etc/redis/
vim sentinel.conf 	##主要更改下面两个参数即可
	protected-mode no
	sentinel monitor mymaster 172.25.60.7 6379 2

同时给slave 端配置sentinel

scp sentinel.conf 172.25.60.5:/etc/redis/
scp sentinel.conf 172.25.60.7:/etc/redis/

(3)启动:sentinel
先在master端执行,再在slave端执行

redis-server /etc/redis/sentinel.conf --sentinel

在这里插入图片描述

测试: master端

先查看master端信息

[root@server4 ~]# redis-cli
127.0.0.1:6379> info

在这里插入图片描述
使用SHUTDOWN关闭master

127.0.0.1:6379> SHUTDOWN
not connected> 

三个sentinel进程会选举出新的master
在这里插入图片描述
redis官网里有sentinel的详细说明,我就不详细说了,官网链接:http://www.redis.cn/topics/sentinel.html

4.创建集群

[root@server4 ]# cd /usr/local/
[root@server4 local]# mkdir redis-cluster
[root@server4 local]# cd redis-cluster/
[root@server4 redis-cluster]# mkdir 700{1..6}

##在每个目录中编写配置文件
[root@server4 redis-cluster]# cd 7001/
[root@server4 7001]# vim redis.conf
	port 7001			//随便写,与目录名相同方便看。其他一样
	cluster-enabled yes
	cluster-config-file nodes.conf
	cluster-node-timeout 5000
	appendonly yes
	daemonize yes
[root@server4 7001]# redis-server redis.conf 

创建集群:

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 \
--cluster-replicas 1

在这里插入图片描述
数据文件:

/usr/local/redis-cluster/7001/appendonly.aof

在这里插入图片描述
在这里插入图片描述

(1)在一个上面创建数据,所有的都可以查看
在这里插入图片描述
(2)当master挂掉时,他的slave会自动接管,成为新的master
在这里插入图片描述

在这里插入图片描述
(3)当挂掉的master重新开启后,就会自动成为slave
在这里插入图片描述

(4)当挂掉一半以上的master,集群就会挂掉
在这里插入图片描述
在这里插入图片描述
集群挂掉,此时无法查看数据:
在这里插入图片描述

脚本方式创建集群:
上面手东创建集群的方法太麻烦了,也可以通过脚本的方式创建,脚本在安装包中已给出。

cd /root/redis-5.0.3/utils/create-cluster

./create-cluster start		##开启
./create-cluster create		##创建
./create-cluster stop		##关闭
./create-cluster clean		##清空数据

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值