Maison  >  Article  >  développement back-end  >  go-redis v8 XAutoClaim n'est pas compatible avec le serveur Redis v7+

go-redis v8 XAutoClaim n'est pas compatible avec le serveur Redis v7+

王林
王林avant
2024-02-09 16:54:08899parcourir

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

L'éditeur PHP Zimo est là pour vous présenter un problème important, à savoir que la fonction XAutoClaim de go-redis v8 est incompatible avec le serveur Redis v7+. Il est entendu que go-redis est une bibliothèque client Golang Redis populaire et que XAutoClaim est une nouvelle fonctionnalité de sa dernière version, qui peut être utilisée pour allouer automatiquement des tâches dans la file d'attente Redis. Cependant, lors de l'utilisation de cette fonction, il a été constaté qu'elle était incompatible avec le serveur Redis v7+, ce qui l'empêchait de fonctionner correctement. Ce problème peut causer des problèmes aux développeurs utilisant go-redis, nous devons donc trouver une solution pour résoudre ce problème de compatibilité.

Contenu de la question

Question

J'utilise go-redis v8 avec une instance de serveur redis v7. Autant que je sache, la commande XAutoClaim n'est pas compatible. client.XAutoClaim 返回错误:got 3,想要 2.

La documentation officielle go-redis/v8 sur XAutoClaim ne fait aucune mention d'incompatibilité avec redis version 7+.

Étapes pour reproduire

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())

Workaround

go-redis v8 XAutoClaim n'est pas compatible avec Redis version 7+. Bien que ce problème ne soit pas officiellement documenté, il y a un problème à ce sujet ici : https:///github.com/redis/go-redis/issues/2106.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer