【问题标题】:Redisson acquires new connection for each requestRedisson 为每个请求获取新连接
【发布时间】:2021-09-27 00:42:29
【问题描述】:

我目前正在为 redis 测试 reddison 客户端。对于一个简单的 RMap 集,我得到了 10 毫秒的时间。与 jedis 相比,jedis 只需 2 毫秒即可完成设置和获取。我的reddison测试代码如下

public static void main(String[] args) {
Config config = new Config();
config.useSentinelServers().setCheckSentinelsList(false).setMasterName("mymaster")
        .addSentinelAddress("redis://localhost:26379").setPassword("zzz");

RedissonClient redisson = Redisson.create(config);
RMap<String, String> map = redisson.getMap("myMap");
while (true) {
    System.out.println("ENTER");
    Scanner in = new Scanner(System.in);
    String s = in.nextLine();
    try {
        LocalDateTime start = LocalDateTime.now();
        map.put("test", s);
        System.out.println("OUTPUT:::" + map.get("test"));
        System.out.println(Duration.between(start, LocalDateTime.now()).toMillis());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

在检查调试日志后,我发现 reddison 每次在执行 put 或 get 之前都会获取一个连接(LOG:: acquire connection for command)。有没有办法让 redisson 客户端对所有请求使用相同的连接并避免这种成本?

【问题讨论】:

    标签: java redis redisson


    【解决方案1】:

    Redisson 使用连接池。 从不为每个操作创建新连接。对数据的首次操作可能需要默认编解码器进行初始化。从3.16.1版本开始增加默认数据编解码预热过程。

    【讨论】:

    • 每次我执行 set 或 get 请求时,在调试日志中都会显示已获取命令连接,这导致了我认为的 10 毫秒延迟。我怎样才能避免这种情况?我已经尝试过 3.16.1
    • 从连接池中获取。您可以查看源代码。
    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2014-11-22
    • 2021-11-29
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多