问题标签 [redisson]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Redisson 尝试连接到内部 redis IP 而不是配置中指定的浮动 redis IP
我正在使用带有ratpack的redisson。下面是我为 redisson 设置的配置。
我在配置中添加了所有主从 IP 作为节点地址,上面添加的 IP 是浮动 IP。Redisson 能够与除一个主节点之外的所有节点建立连接。但是,相同的错误消息显示主节点的内部 IP,而不是我在 redisson 配置中添加的浮动 IP。我得到的错误信息如下
紧随其后的是 RedisConnectionException:
非常感谢您对此事的任何见解。
redisson - Redisson:为什么反应式客户端没有 PermitExpirableSemaphore?
我正在使用 redisson 反应式 Java 客户端。在非反应性客户端中,可以得到一个可过期的信号量:-
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore");
但是如果我创建一个响应式客户端,我只能找到redisson.getSemaphore("value")
函数。我需要 PermitExpirableSemaphore 因为:-
- 我需要一个可以由不同线程释放的锁(所以不能使用
RLock
)。 - 我需要一个租约超时来防止死锁,以防获取锁的线程被杀死或卡住。
有没有办法在 Redisson 分布式锁定中实现这种行为?
Edit1:我可以在 Config 中将全局租用时间设置为:- Config().setLockWatchdogTimeout(leaseTimeMs)
,但我确实需要在不同的锁上使用不同的租用时间。
Edit2 :在https://github.com/redisson/redisson/issues/1391上的 Redisson github 上提出了一个问题
java - 从 CLI 解锁 Redis 锁
我有一个 java 应用程序,它在本地网络上有多个实例。它使用 Redis Redlock 来管理共享数据库的完整性。这里的问题是这个java应用程序仍然非常不稳定,所以它崩溃了很多次。当一个实例崩溃并且它在崩溃时持有锁时,所有其他实例都会卡住。我的问题是,当持有锁的 Java 应用程序实例崩溃时,我可以从 Redis CLI 释放锁吗?
java - Redisson:在 finalize 方法中关闭客户端
我正在为 redission 客户端编写一个适配器以在我们的应用程序中使用,我不确定在 finalize 块中关闭客户端是否是一个好的设计。下面是代码。请告诉我
编辑:我有兴趣了解在 Web 应用程序中关闭静态最终连接对象的正确设计。我无法在方法的 finally 块中关闭它,因为客户端将被多个类中的多个方法使用
spring - 在 Spring Boot 的类路径资源中创建名称为“redisson”的 bean 时出错
我在将 Redis("Using Redisson") 与 spring boot 连接时遇到了一些问题。 在应用程序开始时间显示以下错误。
“org.springframework.beans.factory.BeanCreationException:创建类路径资源[com/redisson/config/RedisConfig.class]中定义的名称为'redisson'的bean时出错:通过工厂方法进行的bean实例化失败;嵌套异常是org.springframework。 beans.BeanInstantiationException:无法实例化 [org.redisson.api.RedissonClient]:工厂方法“redisson”抛出异常;嵌套异常是 java.lang.IllegalArgumentException:索引 0 处方案名称中的非法字符:127.0.0.1:6379”
我的代码只在spring @Bean 中进行连接
java - Redisson + redis 哨兵。如何处理故障转移并写入redis?
我刚刚编辑了我之前的问题,我正在提供更多详细信息(希望有人能够提供帮助)。
我有一个带有 1 个主设备和 2 个从设备的 Redis 集群。所有 3 个节点均由 Sentinel 管理。The failover works fine and when the new master is elected, I can write on the new master (from the command line). 现在,我正在尝试使用 Redisson 编写一个小型 Java 程序,理想情况下应该将记录写入 redis,并能够处理故障转移(据我所知,它应该这样做)。到目前为止,这是我的代码。
运行代码,发生了一些我不明白的事情。第一个是:
- 为什么redisson将我的3台主机识别为redis奴隶?
- 为什么我创建的键值对没有存储到redis中??
这个想法是,在我能够写入 redis 之后,我将开始测试故障转移,杀死 master,并期望程序会管理它并继续写入新的 master,而不会丢失消息(这会很好能够在发生故障转移时缓存消息)。
这个简单的程序发生的事情是我可以写入redis,但是当我杀死master时,执行只是挂起一段时间,似乎接近setTimeout并退出而没有完成任务。
有什么建议吗?
java - Redisson 按照新提交的作业的时间表执行以前的作业
起初我安排了他们成功执行的 5 个作业 (old_job)。之后我又安排了 5 个作业(new_job),但这次之前的 5 个作业按照我为新作业提供的时间表执行。谁能解释我redisson的这种行为并指出我在哪里犯了错误。
对于这个实验,我在独立模式下运行了 4 个 redissonnodes,配置如下所述。
我需要帮助来推断 redisson 的这种行为。
redis - redisson rbucket中trySet方法的用途是什么
我现在正在学习 Redisson,我有一个例子如下:
结果是:
我对trySet
方法的用法感到困惑,为什么在这个例子中失败了,我在Redisson API文档中没有找到关于这个方法的任何解释,另一个问题是为什么objectSize
是5
?由于 bucket 的值321
现在是,我认为objectSize
应该是3
.
java - 带 redisson 的 Tomcat 会话管理器
尝试使用 Redisson 配置我的 JavaEE Web 项目。
在 Docker 容器中设置 Redis,它工作正常。
通过https://github.com/redisson/redisson/tree/master/redisson-tomcat 配置我的tomcat。
当我尝试运行该项目时,它会引发以下错误:
java.lang.IllegalArgumentException:com.fasterxml.jackson.databind.JsonMappingException:无限递归(StackOverflowError)(通过引用链:java.util.LoaderReference["cacheKey"]->java.util.CacheKey["loaderRef"]
通过从这里和那里阅读,我发现它与使用杰克逊序列化具有双向关系的 Java 对象有关。但是这个项目是如此之大,并且有如此多的对象被序列化,以至于很难确定问题可能来自哪里。
我对 redisson 比较陌生,不知道还需要做什么才能在我现有的 javaEE 项目中作为会话管理器使用它。我们正在尝试从传统的 tomcat 会话管理器转移到基于 redisson 的 tomcat 会话管理器。任何帮助将不胜感激。
redis - Redisson 中的各种锁实现提供了哪些保证?
Redisson 有几种锁实现(RLock
, RedissonMultiLock
, RedissonRedLock
),但是对于每种锁类型在安全性和活跃性方面提供了哪些保证尚不清楚。
参考这个 - https://redis.io/topics/distlock我相信 RedLock 实现必须是最强大的实现,但没有提到其他实现缺乏容错性。