【问题标题】:ERR wrong number of arguments for 'zadd' commandERR 'zadd' 命令的参数数量错误
【发布时间】:2021-02-06 21:04:57
【问题描述】:

我发现了这个错误:

ERR wrong number of arguments for 'zadd' command in golang.

这是我的代码:

defaultPriority:type String
mb.MessageID:type string
mb.EndpointID: type string

    _, err = mbDal.redisClient.ZAdd(mb.EndpointID, redis.Z{Score: defaultPriority, Member: mb.MessageID})
        if err != nil {
            return fmt.Errorf("failed to add mailbox id %s in redis; error %v", mb.MessageID, err)
        }

如何解决此错误消息?

【问题讨论】:

    标签: go redis


    【解决方案1】:

    zadd is used in go-redis/redis,是defined here

    // Redis `ZADD key score member [score member ...]` command.
    func (c cmdable) ZAdd(key string, members ...*Z) *IntCmd {
    

    仔细检查您的 go.mod 依赖项列表。
    10 个月前,在 go-redis v7(而不是当前的 v8)中,signature for that function was

     func (c *cmdable) ZAdd(key string, members ...Z) *IntCmd {
    

    它使用 Z 而不是(今天的)*Z。

    在你的情况下,你应该通过:

    &redis.Z{Score: defaultPriority, Member: mb.MessageID}
    

    【讨论】:

      【解决方案2】:

      我试图将redis.Z{Score: [an int value], Member: code} 插入Redis sorted set,但由于该错误而失败。

      所以我检查了我的逻辑,发现有人用code 作为空字符串调用我的方法。在我的情况下,第一次插入成功,但之后,所有插入都因该错误而失败。

      • 我正在使用github.com/go-redis/redis v6.15.6

      【讨论】:

        猜你喜欢
        • 2016-07-05
        • 2014-03-05
        • 2019-09-02
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        • 2020-12-28
        • 2021-08-09
        • 2017-09-05
        相关资源
        最近更新 更多