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

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