- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 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/
我是 Jedis 的新手,找到了 here 我想创建一个包含 JedisCluster 对象的池,使用的构造函数如下: public JedisCluster(Set nodes, final Ge
我正在 Spring 中编写一个 Web 应用程序,并且将 Spring Data Redis 与 Jedis 结合使用。 Web 应用程序与带有大量设置命令的 Redis 集群对话”我想通过管道向
我知道 Jedis(和其他客户端库)可以选择合适的 shard 来执行 Lua 脚本。但是我找不到的是之后如何使用主从节点。假设我有多个 Lua 脚本,其中一部分用于写入,另一部分用于读取。考虑到从属
我正在使用 JedisCluster,我需要设置一个 1 小时到期的 key ,现在我正在做类似的事情 getJedisCluster().set(key,value); getJed
我的应用程序使用 AWS 上的 ElastiCache 进行缓存。我们当前的设置使用基本的 Redis 集群,没有分片或故障转移。我们现在需要迁移到启用了分片、故障转移等的集群 Redis 弹性缓存。
所以我有两种不同的方法可以在 Jedis 中使用 Redis 集群: 方法一友情链接 here List shards = new ArrayList(); JedisShardInf
我将 Map 存储在 REDIS 的键空间中。如代码所示,我已将多个 Map 存储在多个键空间中。现在我想使用通配符搜索键空间。是否可能,如果可以,该怎么做? package kafka; impor
我有一个 Redis 集群。我正在使用 JedisCluster 客户端连接到我的 Redis。 我的应用程序有点复杂,我想基本上控制我的应用程序将数据发送到哪个分区。例如,我的应用程序由子模块 A、
我看到 Jedis 和 JedisCluster 没有实现通用的 java 接口(interface),我想知道为什么。我的软件将在不同的环境中运行,Redis 可能会或可能不会在集群模式下运行,那么
我们正在将 Redis 堆栈迁移到 Redis Cluster . 在我们的部分应用程序中,这意味着我们必须替换 Jedis带有 JedisCluster 的对象对象。 在我们的 Spring 客户端
我在我的应用程序中使用了 Jedis(2.9.0) API,我发现该 API 不支持 redis 的 TIME 命令,我如何从 Redis 服务器获取系统时间?还是用lua脚本来做?提前致谢。 最佳答
我试图从 java 连接到 JedisCluster (ElastiCache Redis)。但是我收到 JedisConnectionException,集群中没有可访问的节点。 这是我连接到 Je
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我的代码在 Jedis 2.7.x 中已经有几个月了。但我发现我有同样的问题 https://github.com/xetorthio/jedis/issues/1625 (Redis 服务器重启时
我是一名优秀的程序员,十分优秀!