首頁 >後端開發 >Golang >go-redis v8 XAutoClaim 與 Redis 伺服器 v7+ 不相容

go-redis v8 XAutoClaim 與 Redis 伺服器 v7+ 不相容

王林
王林轉載
2024-02-09 16:54:08919瀏覽

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刪除