首页 >后端开发 >Golang >go-redis v8 XAutoClaim 与 Redis 服务器 v7+ 不兼容

go-redis v8 XAutoClaim 与 Redis 服务器 v7+ 不兼容

王林
王林转载
2024-02-09 16:54:08926浏览

go-redis v8 XAutoClaim 与 Redis 服务器 v7+ 不兼容

php小编子墨在这里向大家介绍一个重要的问题,即go-redis v8的XAutoClaim功能与Redis服务器v7+不兼容的情况。据了解,go-redis是一个流行的Golang Redis客户端库,而XAutoClaim是其最新版本中新增的一个功能,可以用于在Redis队列中自动分配任务。然而,使用这个功能时,发现它与Redis服务器v7+不兼容,导致无法正常工作。这个问题可能会给使用go-redis的开发者带来一些困扰,因此我们需要找到解决方案来解决这个兼容性问题。

问题内容

问题

我正在对 redis v7 服务器实例使用 go-redis v8。据我所知, XAutoClaim 命令不兼容。 client.XAutoClaim 返回错误:got 3,想要 2

XAutoClaim 上的官方 go-redis/v8 文档没有提及与 redis 版本 7+ 的不兼容性。

重现步骤

ctx := context.Background()

        streamName := "test-stream"
        groupName := "test-group"

        rdb := redis.NewClient(&redis.Options{
            Addr:     "localhost:6379",
            Password: "", // no password set
            DB:       0,  // use default DB
        })
        defer rdb.FlushDB(ctx).Err()

        // Add message to stream
        rdb.XAdd(ctx, &redis.XAddArgs{
            Stream: streamName,
            Values: map[string]interface{}{"key": "value"},
        })

        // Create consumer group
        rdb.XGroupCreateMkStream(ctx, streamName, groupName, "0")

        autoclaimError := rdb.XAutoClaim(ctx, &redis.XAutoClaimArgs{
            Stream:       streamName,
            Group:        groupName,
            Consumer:     "test-consumer",
            MinIdle:      0,
            Start:        "-",
            Count:        1,
        }).Err()
        print(autoclaimError.Error())

解决方法

go-redis v8 XAutoClaim 与 Redis 版本 7+ 不兼容。虽然这个问题没有正式记录,但这里有一个关于此事的问题:https:// /github.com/redis/go-redis/issues/2106

以上是go-redis v8 XAutoClaim 与 Redis 服务器 v7+ 不兼容的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除