通常情况下,我们会建立多个redis实例来缓解单个redis实例的压力。但是,随着缓存数量的增加,对redis进行扩容是一件非做不可的事情。对redis进行扩容可以有多种办法,比如增加每个redis实例的最大内存。这只是解决办法之一,而且缺乏灵活性和可扩展性。在redis官网上,提到了预分片技术。本文将对预分片技术进行讲解,同时讲解jedis对分片是如何支持的。
一、redis预分片技术
在单个server上搭建多个redis实例。当需要扩展时,可以利用复制机制进行扩展,可参照如下步骤:
1)在新的服务器上创建空的redis实例。
2)配置新的redis实例作为源实例的从实例,将源数据导到新实例上。
3)停止客户端(如jedis)。
4)将客户端配置的实例ip更新为新的服务器地址。注意此处是替换老的ip地址,不能进行追加或调换各地址的顺序。
5)在新服务器上发送SLAVEOF NO ONE命令,使其不再作为从实例。
6)用新的配置重启客户端。
7)最后停止老服务器上不再使用的旧实例。
在这里提出个问题,将老的ip地址替换后,之前映射到旧的redis实例上关键字是否能映射到对应的新redis实例上?本文后面将会进行分析。