1. Redis分片机制

1.1 为什么需要分片机制

如果需要存储海量的内存数据,如果只使用一台redis,无法保证redis工作的效率. 大量的时间都浪费到了寻址当中.所以需要一种机制能够满足该要求.

采用分片机制实现:

redis分片路由算法 redis分片策略_redis分片路由算法

1.2 Redis分片搭建

1.2.1 搭建注意事项

Redis服务的启动需要依赖于redis.conf的配置文件. 如果需要准备3台redis.则需要准备3个redis.conf的配置.

准备端口号:
1.6379
2.6380
3.6381

1.2.2 分片实现

redis分片路由算法 redis分片策略_服务器_02


修改端口号: 将各自的端口号进行修改.

redis分片路由算法 redis分片策略_redis_03

启动3台redis服务器

redis分片路由算法 redis分片策略_redis分片路由算法_04


校验服务器是否正常运行

redis分片路由算法 redis分片策略_服务器_05

1.2.3 关于分片的注意事项

1.问题描述:

当启动多台redis服务器之后,多台redis暂时没有必然的联系,各自都是独立的实体.可以数据数据的存储.如图所示.

2.如果将分片通过程序的方式进行操作,要把3台redis当做一个整体,所以与上述的操作完全不同.不会出现一个key同时保存到多个redis的现象.

redis分片路由算法 redis分片策略_redis_06

1.3 一致性hash算法

1.3.1 常识说明

常识1: 一般的hash是8位16进制数. 0-9 A-F (24)8 = 2^32
常识2: 如果对相同的数据进行hash运算 结果必然相同的.
常识3: 一个数据1M 与数据1G的hash运算的速度一致.

1.3.2 一致性hash算法介绍

一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。 [1] 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题 [2] 。

redis分片路由算法 redis分片策略_服务器_07

1.3.3 特性1-平衡性

概念:平衡性是指hash的结果应该平均分配到各个节点,这样从算法上解决了负载均衡问题 [4] 。(大致平均)

问题描述: 由于节点都是通过hash方式进行算计.所以可能出现如图中的现象.,导致负载严重不平衡

redis分片路由算法 redis分片策略_服务器_08


解决方法: 引入虚拟节点

redis分片路由算法 redis分片策略_redis分片路由算法_09

1.3.4 特性2-单调性

特点: 单调性是指在新增或者删减节点时,不影响系统正常运行 [4] 。

redis分片路由算法 redis分片策略_redis分片路由算法_10

1.3.5 特性3-分散性

谚语: 鸡蛋不要放到一个篮子里.
③分散性是指数据应该分散地存放在分布式集群中的各个节点(节点自己可以有备份),不必每个节点都存储所有的数据 [4]