文章目录加载中

Redis 集群

# 为什么需要 redis 集群?

  1. 从结构上,单个 Redis 服务器会发生单点故障
  2. 从存储上,单个 Redis 服务器的内存非常容易成为存储瓶颈,所以需要进行数据分片

redis 集群实现了数据冗余和读写分离,提高了服务可用性。

# redis 集群常见的几种用法

1、基于集群复制的原理,每个从数据库都保存完整的数据

这种做法不方便水平扩容,并且总数据存储量受限制。

2、数据分片

比如现在有 redis a 和 redis b2 个主数据库实例,他们自己有各自的哨兵和从节点。

可以通过代码逻辑,将不同业务的数据放到不同的实例中。每个实例不再需要保存全部的业务数据。

在分片后,如果想增加更多的节点,就需要对数据进行手工迁移,同时在迁移的过程中为了保证数据的一致性,还需要将集群暂时下线,相对比较复杂

3、预分片技术(presharding)

具体来说是在节点部署初期,就提前考虑日后的存储规模,建立足够多的实例(如 128 个节点)。

4、redis 3.0 支持 Cluster

集群的特点在于拥有和单机实例同样的性能,同时在网络分区后能够提供一定的可访问性以及对主数据库故障恢复的支持。另外集群支持几乎所有的单机实例支持的命令,对于涉及多键的命令(如 MGET),如果每个键都位于同一个节点中,则可以正常支持,否则会提示错误。除此之外集群还有一个限制是只能使用默认的 0 号数据库,如果执行 SELECT 切换数据库则会提示错误。

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog