码迷,mamicode.com
首页 > 其他好文 > 详细

redis分片

时间:2016-09-28 01:33:38      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

本文是在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分片

标签:

原文地址:http://www.cnblogs.com/liuconglin/p/5914629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!