首页 > 后端开发 > Golang > go-redis Eval func返回值类型,当Lua脚本返回数组时

go-redis Eval func返回值类型,当Lua脚本返回数组时

WBOY
发布: 2024-02-09 08:51:33
转载
570 人浏览过

go-redis Eval func返回值类型,当Lua脚本返回数组时

php小编西瓜在这里为大家介绍一下关于go-redis库中Eval函数的返回值类型的问题。当使用Lua脚本执行Eval函数时,有时候脚本返回的是一个数组。那么在go-redis库中,这个返回值的类型是什么呢?下面我们就来详细解答一下这个问题。

问题内容

当lua脚本在eval调用期间返回一个表数组时,如何将其转换为go中的[]字符串?

redis cli 按以下格式返回批量回复。

1) val1
2) val2
登录后复制

go-redis eval 函数会将批量条目返回为

["val1", "val2"] 
登录后复制

解决方法

redis 将 lua 表数组返回为 resp2 数组。然后,go 客户端会将该响应映射到 go 本机类型。 go-redis 的相关文档可以在这里找到: lua和 go 类型

简单地说,lua 表确实映射到批量回复,而 go 客户端将其映射到接口片段:[]interface{}

go-redis 脚本 runeval 都返回 *cmd。您可以使用此类型的方法来检索 go 类型的输出。 result 给出 (interface{}, error),您可以键入断言任何您想要的内容,否则 stringslice 是一个方便的 getter,可以立即检索 []string 脚本 runeval 都返回 *cmd。您可以使用此类型的方法来检索 go 类型的输出。 result 给出 (interface{}, error),您可以键入断言任何您想要的内容,否则 stringslice

是一个方便的 getter,可以立即检索 []string

所以看起来像:

script := redis.NewScript(`
  local foo = {"val1", "val2"}
  return foo
`)

cmd := script.Run(/* parameters */)

i, err := cmd.Result() // (interface, error)
// or
ss, err := cmd.StringSlice() // ([]string, error)
登录后复制
如果这些值实际上并非都是字符串,请使用 slice 获取 []interface{}slice 获取 🎜 切片,然后单独检查元素。🎜

以上是go-redis Eval func返回值类型,当Lua脚本返回数组时的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板