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:

  

  更多的細節問題還需要私下多多研究


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM