首页 > 代码库 > redis分片

redis分片

本文是在window环境下测试

什么是分片

当数据量大的时候,把数据分散存入多个数据库中,减少单节点的连接压力,实现海量数据存储

技术分享

那么当多个请求来取数据时,如何知道数据在哪个redis呢,redis有自己的算法,下图是负载均衡的理解

技术分享

 

步骤:

第一步:分配端口号,启动redis服务

  master1: 6500     master: 6501

第二步:测试

    jar:

 技术分享

     代码:

/**     * 测试,多个主节点,分片         */    @Test    public void test02(){            //GenericObjectPoolConfig对象代表池的配置        GenericObjectPoolConfig config  = new JedisPoolConfig();                //设置redis服务器群        List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();                //第一个主机        JedisShardInfo shard1 = new JedisShardInfo("localhost",6500);        shard1.setPassword("1");        list.add(shard1);                //第二个主机        JedisShardInfo shard2 = new JedisShardInfo("localhost",6501);        shard2.setPassword("1");        list.add(shard2);                //把服务器群加入到连接池中        ShardedJedisPool pool = new ShardedJedisPool(config,list);                 //ShardedJedis对象可以存取数据        ShardedJedis jedis = pool.getResource();                    //看key在主机点的分布情况        for(int i = 0 ; i < 100;i++){            jedis.set("user"+i, "value"+i);        }                //JedisShardInfo对象代表redis服务器,获得key=user1所在的redis服务器        JedisShardInfo info = jedis.getShardInfo("user1");                //查看主机        String host = info.getHost();                //获取redis服务器的端口号        int port = info.getPort();                System.out.println(host + " : " + port );                //归还资源        pool.returnResource(jedis);    }

  结果:

  master1:

技术分享

     master2:

技术分享

  

  更多的细节问题还需要私下多多研究

redis分片