Redis分片

Posted 宫商角羽徵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis分片相关的知识,希望对你有一定的参考价值。

1. 分片作用

说明:一般的业务系统中会将一些重要数据保存到内存中,如果内存占用很大时只使用一台redis则效率低,所以搭建redis分片实现内存的扩容。

2. 准备3台redis

  1. 创建shards目录

    mkdir shards

    2.复制3份配置文件

    cp redis.conf shards/6379.conf

    cp redis.conf shards/6380.conf

    cp redis.conf shards/6381.conf

    3.修改配置文件   分别修改端口号(redis.conf文件)

    

         4.启动3台redis

    src/redis-server shards/6379.conf

    src/redis-server shards/6380.conf

    src/redis-server shards/6381.conf

    5.检查服务启动是否正确:ps -ef|grep redis

    

 

3. 测试分片

  redis分区有两种方式,对既定的key有不同的方式来选择这个key存放到哪个实例中,也就是说有不同的系统来映射某个key到某个Redis的服务。

  • 最简单的分区方式为范围分区,就是映射一定范围的对象到特定的Redis实例。比如,ID从0到10000的用户会保存到实例R0,ID从10001到 20000的用户会保存到R1,以此类推。
  • 另外一种方式是hash一致算法实现分区,对key值进行hash一致性计算后得到结果,最终将数据保存到某一台redis实例中。
   @Test

   public void testShards() {

      List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();

      list.add(new JedisShardInfo("192.168.2.102",6379));

      list.add(new JedisShardInfo("192.168.2.102",6380));

      list.add(new JedisShardInfo("192.168.2.102",6381));

      ShardedJedis jedis = new ShardedJedis(list);

      jedis.set("tsvv,"redis分片测试");

      System.out.println(jedis.get("tsvv"));

   }

 

   分片是多台redis共同作用的,如果其中一台出现了宕机现象,则整个分片都将不能使用,虽然是在一定程度上缓减了内存的压力,但是没有实现高可用。可以采用哨兵机制实现主从复制从而实现高可用。

 

以上是关于Redis分片的主要内容,如果未能解决你的问题,请参考以下文章

flea-frame-cache使用之Redis分片模式接入

在 Istio 中实现 Redis 集群的数据分片读写分离和流量镜像

在 Istio 中实现 Redis 集群的数据分片读写分离和流量镜像

回栈事务后如何持久化分片数据?

分片交易移除

Redis-分片