问题标签 [reddison]

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.

0 投票
0 回答
88 浏览

redis - socketio join 不会创建空间,但在发布消息时有效

我正在为 redis 客户端使用 netty socketio 和 reddison。我已将 redis 配置为与 netty socketio 作为 pubsub 和保存会话存储一起使用。

现在我使用下面的代码在 redis 中创建了一个带有 netty socketio 的房间。使用他们的电子邮件为客户创建特定队列。

现在我可以使用以下代码向该特定用户发送数据

whereuser1@example.com被用作房间名称以在初始代码中加入房间。

如果我使用下面的代码,我会收到事件。

但是现在如果查看 redis 中的 pubsub 频道,我会看到这一点。

在此处输入图像描述

我没有看到user1@example.com这里的频道。这里到底发生了什么?有人可以对此提供一些见解。

0 投票
0 回答
61 浏览

spring-boot - socketio发射器需要什么

我正在使用 netty socketio。我尝试设置两台服务器并从一台服务器创建一个房间。现在,如果我以相同的方式设置了另一个实例,我可以发布到从第一个实例创建的频道,尽管我无法从第二个实例查看频道。

注意:我已经使用 reddison 到 netty socketio 来替换内存适配器。

现在我的问题是,如果我能够使用 netty socketio 本身通过使用房间将数据从一台服务器传输到另一台服务器,那么 socketio 发射器的用途是什么。据我了解,它用于在多个实例上向客户端发送数据。但是仅 netty socketio 就可以达到目的。除了在客户端之间传输数据或它正在处理的集群部署中的某些场景之外,socketio 发射器还有助于实现其他任何事情吗?有人可以帮我理解这一点。

0 投票
0 回答
70 浏览

redis - Redisson客户端很慢

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

我更喜欢 reddison,因为它具有自动重新连接功能。如何在 reddison 中获得更快的响应时间?

编辑:检查调试日志后,我发现 reddison 每次在执行 put 之前都会获取连接。有没有办法像绝地一样保持联系并避免这种成本?

0 投票
0 回答
74 浏览

redis - reddison 客户端中的流监听器

我正在使用 Redisson 客户端并希望实现读取流的解决方案。在 pub/sub 模型中,有一个选项可以添加 MessageListener,它负责订阅主题,我们所要做的就是为其提供一个 impl,每次向主题发布新消息时都会执行该 impl。对于流,我希望有一个类似的侦听器,但似乎我们必须自己处理流的轮询。如果库中有可以做到这一点的东西,那就太好了。正在使用的版本:3.15.6

0 投票
1 回答
108 浏览

redis - 如何在redisson响应式api中配置密钥过期事件监听器(spring boot项目)

我正在使用带有 redisson 的 Spring Boot Web Flux。我想在我的应用程序中启用所有密钥过期事件。我试过这样。但它不起作用。

我希望帮助解决这个问题。

0 投票
1 回答
61 浏览

redis - Redisson RStreams没有收到消息

我正在尝试使用 Reddison lib 将流与 redis 一起使用。我code StreamReadGroupArgs.neverDelivered()在接收消息时使用。但是,如果我不确认它,那么下次调用 readGroup 时它就不会收到这些消息。问题是如果节点崩溃或网络出现故障而我无法处理这些消息怎么办。然后,即使我没有确认它,我也不会再收到这些消息。是否有解决方法或我可以做的其他事情?

0 投票
0 回答
42 浏览

json - 使用 JsonJackson 编解码器时,无法将我的 Kotlin 数据类的类名存储在 Redis 缓存中

将 java 对象存储为 json 时,@class将添加到数据中,并将用于反序列化到相应的对象中。

但是当Kotlin涉及到一个数据类时,它没有添加@class,当我尝试反序列化时,我得到了错误

我无法添加注释@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS),因为这会暴露我的数据类,并且我知道错误是因为 Kotlin 数据类默认情况下是最终的。

有没有办法克服这个错误?

0 投票
0 回答
13 浏览

java - 使用 Redis 使用高效的循环算法调度异步作业

我们正在尝试重新设计基于微服务架构的应用程序以支持多个租户。我们有一个简单的队列服务,其他服务将使用它来对任何异步作业进行排队。另一方面,单个微服务将轮询队列服务以获取/选择它们可以频繁处理的任何异步作业(出队)。

为了确保出队期间的公平性,我们使用了一个简单的循环算法,该算法使用 Redis 中的循环列表 ( https://redis.io/commands/lmove#pattern-circular-list ) 实现。我们将服务名称维护为键/列表名称,并将所有租户标识符维护为值。这使我们可以在每次从特定服务发出获取请求时在每个服务的基础上进行循环。我们使用了 Redisson 的 Deque 数据结构(存储所有租户)以循环方式遍历所有租户。

这种方法有一个缺点。即使是没有工作的租户(在我们的例子中更高),当获取请求到达时也会被考虑,这会导致有工作的租户出现一些延迟。

我们可以只添加具有作业的租户,而不是将所有租户标识符添加到列表中,因为我们可以在排队操作发生时识别租户。我们可以在出队期间从列表中删除租户。但是由于我们的应用程序是多线程的,我们不太确定如何处理 Redis 中的并发部分,即我们可能会在租户获得新工作时从列表中删除他。

例如,当一个作业排队时,tenant1 被添加到列表中,而在出列期间,正如我们向 Redis 发出命令以从列表中删除tenant1 一样,tenant1 的另一个新作业已登陆。现在,在新作业的新排队操作中,我们将尝试将tenant1 添加回列表中。由于网络延迟或应用程序的多线程性质,如果添加租户操作在删除命令之前执行,然后删除命令将从列表中删除租户标识符。这将导致租户 1 在列表中不可用,即使他在队列中有工作。

我们如何解决这个问题,或者我们可以考虑其他方法吗?