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。