Redis分布式集群

前言

Redis3.0以后的版本支持了Cluster 那么我们首先会想到Cluster是解决怎样的应用场景

为了应对大流量访问下提供稳定的业务,集群化是存储的必然形态 之前的单点存储势必会有诸多隐患

而未来的发展趋势肯定是大数据和云计算的紧密集合 分布式架构也就可以很好的体现他的优势

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率

解决方案

目前的Redis的集群化方案有三种

  • Twitter开发的twemproxy
  • 豌豆荚开发的codis
  • redis官方的redis-cluster

redis-cluster是三个里性能最强大的 因为他使用去中心化的思想 使用hash slot方式 将16348hash slot 覆盖到所有节点上

对于存储的每个key值 使用CRC16(KEY)&16348=slot 得到他对应的hash slot 并在访问key时就去找他的hash slot在哪一个节点上

然后由当前访问节点从实际被分配了这个hash slot的节点去取数据 节点之间使用轻量协议通信 减少带宽占用 性能很高

自动实现负载均衡与高可用 自动实现failover 并且支持动态扩展 官方已经玩到可以1000个节点 实现的复杂度低 因为他的去中心化思想免去了proxy的消耗 是全新的思路

基本介绍

Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation

Redis 集群通过分区partition来提供一定程度的可用性availability: 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。

Redis集群提供了以下两个好处:

  • 将数据自动切分split到多个节点的能力。
  • 当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力。

集群搭建

1

2

本地安装Redis服务 我因为是mac环境 所以直接可以通过homebrew安装

1
$ brew install redis

为了搭建 目录这里新建了6个节点目录
2