redis - 如何检查 Redis 中是否存在消费者组?
问题描述
目前我正在寻找优雅的解决方案来检查 Redis 流中的消费者组是否已经存在。
我有几个模块连接到同一个流并从中读取数据。但是他们可以以不同的顺序开始,如果没有创建消费者组 - 尝试创建它。如果第一个模块创建了组,则根据文档,其他模块会出错。
从文档中:
如果指定的消费者组已经存在,该命令将返回 -BUSYGROUP 错误。
我想避免这个错误。
我使用 Jedis 客户端与 Redis 一起工作。我知道有XINFO
命令(可以返回组列表),但是当 Redis 在集群模式下启动时它不起作用(这可以是我的配置之一)。
解决方案
没有其他方法,正如您在问题中所述,有两种选择:
XGROUP CREATE
并在组已经存在的情况下捕获错误。XINFO STREAM
并查找该组,但这不是原子的,并且可能会在您获取信息后立即调用并行组创建。
推荐阅读
- python - QTextedit find() 总是返回 False (pyside2)
- ruby-on-rails - Rails json找到空字段
- sql-server - 如何安装 SSDT 以在没有许可证的企业中使用(即免费 $$$)?
- http - 为什么 net/http 处理程序不能同时处理多个请求?
- arrays - 如何在c语言中声明3d字母数组
- c# - 为什么我的数组序列化为字符串
- laravel - 无法重新启动 supervisor.service: Unit not found CentOS 7
- python - psycopg2.InterfaceError:仅支持协议 3
- r - R - 你如何在函数中填充向量?
- java - 在百里香迭代中使用标签