如何有效地使用 JedisCluster

汤姆

我是 Redis 的新手,我正在使用 Redis Java Client 来处理 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.

这样,我们可以将 JedisCluster 实例保存在 Singleton 对象中,然后在 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;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用JedisCluster写入Redis集群中的分区

来自分类Dev

如何更有效地使用find命令?

来自分类Dev

如何有效地使用GetProperties()?

来自分类Dev

如何使用JUnit有效地测试方法

来自分类Dev

如何有效地使用Modulo?

来自分类Dev

如何有效地使用OWLAPI计算脱节?

来自分类Dev

如何更有效地使用find命令?

来自分类Dev

如何使用JUnit有效地测试方法

来自分类Dev

如何有效地使用反应钩子?

来自分类Dev

如何有效地语法

来自分类Dev

有效地使用ConcurrentHashMap?

来自分类Dev

有效地使用parfor

来自分类Dev

有没有办法使用 JedisCluster API 从 redis 服务器获取时间?

来自分类Dev

如何使用Spark有效地检查列中的所有值?

来自分类Dev

如何有效地强制VirtualBox对所有VM文件使用/ dev / shm?

来自分类Dev

WPF如何有效地检测用户活动

来自分类Dev

如何有效地检查位掩码?

来自分类Dev

如何有效地测试此Django模型?

来自分类Dev

如何有效地计算对数回报

来自分类Dev

如何有效地显示熊猫的日期范围?

来自分类Dev

如何有效地随机播放位?

来自分类Dev

如何有效地实现这种效果?

来自分类Dev

如何有效地把握Pygame的关键?

来自分类Dev

如何从长表有效地创建SparseDataFrame?

来自分类Dev

如何有效地实现这种效果?

来自分类Dev

如何更有效地找到闭环

来自分类Dev

如何有效地索引文件?

来自分类Dev

如何有效地检查不同的根节点

来自分类Dev

如何有效地检测用户城市?