gpt4 book ai didi

redis - 如何有效使用JedisCluster

转载 作者:可可西里 更新时间:2023-11-01 11:47:17 24 4
gpt4 key购买 nike

我是 Redis 的新手,我正在使用 Redis Java 客户端来处理 Redis 集群。

我有以下代码:

public class HelloRedisCluster {
public static void main(String[] args) {
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
nodes.add(new HostAndPort("127.0.0.1", 6001));
nodes.add(new HostAndPort("127.0.0.1", 6002));
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10000);
config.setMaxIdle(500);

JedisCluster cluster = new JedisCluster(nodes);
cluster.set("abc", "123");
System.out.println(cluster.get("abc"));
cluster.close();
}
}

在上面的代码中,它只是打开集群,使用 Redis 设置/获取,然后关闭集群。

如果代码作为服务运行(例如在 Servlet 中),那么它会频繁打开和关闭集群,这会导致性能不佳。

请问如何有效使用JedisCluster?

谢谢!

最佳答案

我已经了解了 JedisCluster 的工作方式。在内部,它已经使用了 Jedis Pool。

JedisCluster提供的操作也遵循相同的模式,以set为例:

1. Borrow a Jedis object from Jedis Pool
2. Call Jedis#set method
3. Release the Jedis object back to the pool.

这样,我们就可以在Singleton对象中持有一个JedisCluster实例,然后在JVM退出时关闭JedisCluster对象,代码如下:

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashSet;
import java.util.Set;

public class JedisClusterUtil {
private static JedisCluster cluster;

static {
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
nodes.add(new HostAndPort("127.0.0.1", 6001));
nodes.add(new HostAndPort("127.0.0.1", 6002));
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10000);
config.setMaxIdle(500);

cluster = new JedisCluster(nodes, config);

Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
if (cluster != null) {
cluster.close();
}
}
});
}

public static JedisCluster getCluster() {
return cluster;
}
}

关于redis - 如何有效使用JedisCluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56180886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com