redis load balancing
When high concurrency occurs in a web project, it can be handled through load balancing. The slot allocation mechanism of redis is A load balancing mode
redis slot allocation mechanism:
In the cluster solution officially given by redis, data is allocated according to slots, and the key of each data It is mapped to a slot by the hash function. Redis-3.0.0 stipulates a total of 16384 slots. Of course, this can be configured according to the user's preferences. When the user puts or gets a piece of data, it first searches for the slot corresponding to the data, then searches for the corresponding node, and then puts the data into the node. In this way, the data is evenly distributed to each node in the cluster, thereby achieving load balancing on each node and giving full play to the power of the cluster. (redis tutorial)
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); } } }
The above is the detailed content of How redis implements load balancing. For more information, please follow other related articles on the PHP Chinese website!