Connect Redis cluster with jedis

安稳与你 提交于 2020-01-01 10:05:18

问题


Since a single redis instance doesn't meet my requirements, I went for redis cluster. I formed cluster with three nodes and populated data into the cluster. When I get data from cluster using JedisCluster it takes more time than the single instance. So, what's the proper way to connect jedis with redis cluster. How can I make use of connection pool to connect jedis with redis cluster?


回答1:


It's normal that you observe latency when you retrieve datas in a jedis cluster depending of the clustering strategy that you have because you will bonce from one jedis to another in order to take the datas. The red arrow, is the reason of the time added to queries in jedis cluster.

The onlyway to access to the right instance is to understand from the key the location of your datas, introduicing in the key the location exemple : "instance3/user/5" or finding the location instance performing an calculation on the keys.




回答2:


JedisCluster creates it's own pooling. You can provide the configuration for the pooling when you create the JedisCluster object. From that point on, you can treat the cluster like a single instance and the requests will go to the proper cluster instance.

JedisCluster cluster - new JedisCluster(...); ... cluster.set(key, value);

Trying to figure out which instance it went to can be done by getSlot() but there's no guarantee that from one moment to the next the key you set is on the same instance. Because of failover, it could have moved.



来源:https://stackoverflow.com/questions/31587128/connect-redis-cluster-with-jedis

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!