一. 集群
1. 集群的概念
集群由多个节点(Node)组成,Redis的数据分布在这些节点中。
集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。
2. 集群的作用
数据分区:数据分区(或称数据分片)是集群最核心的功能。
3. 数据分区的方法
- 哈希取余分区
- 一致性哈希分区
- 带虚拟节点的一致性哈希分区
虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有的数据映射到一个固定范围内的整数集合,整数定义为槽
redis-cluster集群的槽的范围为 0~16383
二. 通过Ruby脚本, 搭建集群
1. 安装ruby环境并安装redis-trib.rb脚本
https://www.cnblogs.com/q767498226/p/10704784.html
2. 配置redis-cluster
port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes #开启集群模式 cluster-config-file nodes-7000.conf #集群内部的配置文件 cluster-require-full-coverage no #redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no # 配置6个这样文件, 区分端口即可
# 启动redis
3. 一键开启redis-cluster集群
redis-trib.rb create --replicas 1 127.0.0.1:7000 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
--replicas=1表示每个主节点有1个从节点;后面的多个{ip:port}表示节点地址,前面的做主节点,后面的做从节点。使用redis-trib.rb搭建集群时,要求节点不能包含任何槽和数据。
4. 查看集群状态
redis-cli -p 7000 cluster info