redis如何實現負載均衡

redis如何實現負載均衡

redis負載均衡

在web項目里出現高并發時,可以通過負載均衡來處理,redis的插槽分配機制就是一個負載均衡的模式

redis插槽分配機制:

在redis官方給出的集群方案中,數據的分配是按照槽位來進行分配的,每一個數據的鍵被哈希函數映射到一個槽位,redis-3.0.0規定一共有16384個槽位,當然這個可以根據用戶的喜好進行配置。當用戶put或者是get一個數據的時候,首先會查找這個數據對應的槽位是多少,然后查找對應的節點,然后才把數據放入這個節點。這樣就做到了把數據均勻的分配到集群中的每一個節點上,從而做到了每一個節點的負載均衡,充分發揮了集群的威力。(redis教程

public?static?void?main(String[]?args)?{ ????????List<jedisshardinfo>?shards?=?new?ArrayList<jedisshardinfo>(); ????????shards.add(new?JedisShardInfo("127.0.0.1",?6379)); ????????shards.add(new?JedisShardInfo("127.0.0.1",?6380));  ????????ShardedJedisPool?sjp?=?new?ShardedJedisPool(new?JedisPoolConfig(),?shards); ????????ShardedJedis?shardClient?=?sjp.getResource(); ????????try?{ ????????????shardClient.set("A",?"123"); ????????????shardClient.set("B",?"234"); ????????????shardClient.set("C",?"345");  ????????????try?{ ????????????????System.out.println(shardClient.get("A")); ????????????}?catch?(Exception?e)?{ ????????????????e.printStackTrace(); ????????????}  ????????????try?{ ????????????????System.out.println(shardClient.get("B")); ????????????}?catch?(Exception?e)?{ ????????????????e.printStackTrace(); ????????????}  ????????????try?{ ????????????????System.out.println(shardClient.get("C")); ????????????}?catch?(Exception?e)?{ ????????????????e.printStackTrace(); ????????????} ????????}?catch?(Exception?e)?{ ????????????e.printStackTrace(); ????????}?finally?{ ????????????sjp.returnResource(shardClient); ????????} ????}  }</jedisshardinfo></jedisshardinfo>

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享