Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go Redis事务管道没有执行所有事务,而是返回排队命令_Go_Redis_Transactions - Fatal编程技术网

Go Redis事务管道没有执行所有事务,而是返回排队命令

Go Redis事务管道没有执行所有事务,而是返回排队命令,go,redis,transactions,Go,Redis,Transactions,Go redis事务管道,不执行所有事务,而是在调用pipe.Exec()时返回排队命令 (Redis客户端使用:“github.com/go-Redis/Redis/v7”导入为红色) 当键的长度>9时,pipe.Exec()返回的cmders结构是一个数组,其中第一个元素的类型为*redis.StatusCmd,val为“QUEUED”,数据为“multi”。其余元素的类型为*redis.stringmapcmd,如预期的那样 pipe := *red.Client.TxPipeli

Go redis事务管道,不执行所有事务,而是在调用pipe.Exec()时返回排队命令

(Redis客户端使用:“github.com/go-Redis/Redis/v7”导入为红色)

当键的长度>9时,pipe.Exec()返回的cmders结构是一个数组,其中第一个元素的类型为*redis.StatusCmd,val为“QUEUED”,数据为“multi”。其余元素的类型为*redis.stringmapcmd,如预期的那样

    pipe := *red.Client.TxPipeline()

    for _, key := range keys {

        pipe.HGetAll(key)
    }

    cmders, err := pipe.Exec()
    if err != nil {
        return err
    }
其他信息/我尝试过的事情:

  • 所有错误均为零

  • 当len(keys)=10时,管道中的最后一个命令不执行,而是排队;cmders数组包含1*redis.StatusCmd和9*redis.StringMapCmd结构,对应于前9个键

  • 增加关键点的数量会导致丢失更多的命令。 例如,当键的长度为70时,没有 *为最后7个命令返回的redis.stringmapcmd结构

  • 在使用HDEL、HGET和HSET时,发现同样的问题

  • 在Exec之前和之后添加time.Sleep()没有改变 任何事都可以

  • 最后,我尝试重新排列keys数组并找到了相同的结果 问题,添加到管道的最后一个命令已排队