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

 

posted @ 2019-10-13 23:02  涂山有雨  阅读(366)  评论(0编辑  收藏  举报