我以前一直在用这个:
data, err := redis.Bytes(c.Do("GET", key))
确保返回的数据是 byte slice 。
但是,我现在需要向 Redis 请求添加一个额外的命令,所以我有这样的东西:
c.Send("MULTI")
c.Send("GET", key)
c.Send("EXPIRE", key)
r, err := c.Do("EXEC")
但现在我似乎无法让 GET
命令返回一段字节。我试过像下面那样添加 redis.Bytes
但没有成功。
c.Send("MULTI")
redis.Bytes(c.Send("GET", key))
c.Send("EXPIRE", key)
r, err := c.Do("EXEC")
最佳答案
在redis中,EXEC
命令返回一个包含事务中所有命令结果的数组。
redigo 提供了一个Values
函数,它将一个数组命令回复转换为一个[]interface{}
。
c.Send("MULTI")
c.Send("GET", key)
c.Send("EXPIRE", key)
r, err := redis.Values(c.Do("EXEC"))
r[0]
现在将来自 GET
命令的回复作为 interface{}
,因此您需要执行键入断言以获取您期望的 byte slice 段:
data := r[0].([]byte)
引用资料
关于go - Redigo 多请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30525005/