Redis(二)搭建redis集群
作者:互联网
1.为什么需要redis集群?
- 单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。
- 单个redis的读写能力是有限的。
2.redis集群概述
redis集群中,每一个redis称之为一个节点。有两种类型的节点:主节点(master)、从节点(slave)。Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。
redis集群的优势:
- 自动分割数据到不同的节点上。
- 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
Redis的数据分片:
Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽。由于从一个节点将哈希槽移动到另一个节点并不会停止服务,所以无论添加删除或者改变某个节点的哈希槽的数量都不会造成集群不可用的状态。
基于主从复制:
为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型。每个master节点都至少有一个slave节点,这样在master节点失败之后,他的slave节点会继承他的工作。整个集群不会受到影响。
3.搭建Redis集群
背景:一台服务器,并且已经安装好了Redis.
1.创建集群目录:
2.创建一个 redis.conf 文件,之后启动redis.
内容如下:
查看:
3.在剩下的几个目录里,依次创建与自己路径名对应的文件,之后在查看:
4.使用redis-cli ->info 检查:
5.添加节点到集群:
现在我们已经有了六个正在运行中的 Redis 实例, 接下来我们需要使用这些实例来创建集群, 并为每个节点编写配置文件。
通过使用 Redis 集群命令行工具 redis-trib , 编写节点配置文件。
先要安装ruby解释器:
拷贝相关配置文件:
所有的槽已被分配:
7001,7002,7003被分配为master节点,并且都有一个slave节点。
6.测试:
1.写入数据:
数据被自动分配到节点2上:
2.在另一各数据库上读取数据:
也是读取的7002上的数据
3.将7002关闭:
7006承担起7002的工作:
4.将7006也关闭:
读取不到数据了。
5.恢复:数据库的appendonly.aof会保留之前的数据,可以用来恢复数据:
当然正常情况下的关机只需要重新打开就好了:此时,7006成为了master节点,7002成为了slave节点。
标签:redis,Redis,集群,master,7002,节点 来源: https://blog.csdn.net/qq_42806574/article/details/104842858