概念:采用多个redis的方式,各个redis具有主从关系,从节点reids只能用于存储和读取数据,因为读操作负载量大,而主redis负责读写操作。将不同的数据分配到不同的redis,便于数据的管理,达到负载均衡。

Redis分区算法

数据分区算法

1.顺序分区

概念:将数据根据某种顺序插入redis

  • 轮询分区算法

将数据均匀地分配到每个节点。

  • 时间片轮转分区算法

将数据分配到指定的时间片节点,时间片结束将数据分配到其他时间片节点

  • 数据块分区算法

将数据块分配到某个能够容纳该数据的节点。

  • 业务主题分区算法

将数据分为不同功能,根据功能分配到对应节点。

2.Hash分区

  • 一致性hash分区算法

通过一致性hash环的数据结构来实现,分配原则顺/逆时针分配,将数据根据就近原则分配到附近的hash块。

  • 节点取模分区算法

通过数据的hash(key)来除以redis中节点数来取模,模的值就是节点的第几位。

  • 虚拟槽分区算法

首先虚拟出一个整数数量的槽点,槽点一般大于redis中节点数量,数据与节点无关,数据通过算法hash(key)%slotNum映射到slot槽点。

分布式系统搭建

前提:在linux操作系统的redis数据库前提下进行伪系统的搭建。

建立伪系统,每个系统必须有多个reids,并且有主从关系。

实例:

采用三个主从集群,每个主从集群两个redis。

做法:先删除所有持久化文件,在redis根目录mkdir出一个cluster-dis文件夹,将redis.conf复制到该文件夹,再修改redis配置文件,然后vim出六个空的(reids端口号).conf文件,分别对该六个配置文件进行配置。

redis.conf的配置

redis分层 redis分区和分片原理_数据库

redis分层 redis分区和分片原理_缓存_02

 

redis分层 redis分区和分片原理_数据库_03

 

主从集群的配置

例:拿redis6381.conf做配置例子

 

redis分层 redis分区和分片原理_数据_04

其他五个redis配置文件 也是同样的配置,只需修改对应端口号即可。

设置主从集群

步骤:先分别启动六个redis数据库,然后输入指令(# redis-cli create --cluster-replicas 1 192.168. 59.110:6381),--cluster-replicas设置每个主redis带有一个slave,而谁设置为主redis会根据master选举进行投票。

关闭系统

只需将各个节点shutdown即可。

redis-cli -p端口号 shutdown