go - Redigo 多请求

标签 go redis redigo

我以前一直在用这个:

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/

相关文章:

java - Spring Security 与 Redis 的并发控制

php - 如何在 Predis 中使用 SCAN 和 MATCH 选项

golang + redis 并发调度器性能问题

javascript - golang 服务器上的 CORS 和 javascript 获取前端

database - 如何使用 docker-compose 运行 golang-migrate?

go - 如果覆盖率低于一定百分比,则单元测试失败

go - 创建通用函数以从 map 中提取值

python - Windows 错误 10061 - Django channel

go - 我应该检查 redis 多事务的每一步错误吗?

go - 在 Golang 中将 interface{} 转换为 []string