Home >Backend Development >Golang >go-redis Eval func return value type when Lua script returns array
php Editor Xigua is here to introduce to you the issue about the return value type of the Eval function in the go-redis library. When using a Lua script to execute the Eval function, sometimes the script returns an array. So in the go-redis library, what is the type of this return value? Let’s answer this question in detail below.
When a lua script returns a table array during an eval call, how do I convert it to a [] string in go?
redis cli returns batch replies in the following format.
1) val1 2) val2
go-redis eval function will return batch entries as
["val1", "val2"]
redis returns the lua table array as a resp2 array. The go client will then map that response to a go native type. Relevant documentation for go-redis
can be found here: lua and go types.
Simply put, the lua table does map to bulk reply, and the go client maps it to the interface fragment: []interface{}
.
go-redis
The scripts run
and eval
both return *cmd
. You can use this type of method to retrieve go type output. result
Given (interface{}, error)
, you can type assert whatever you want, otherwise stringslice
is a Convenient getter to instantly retrieve []string
.
So it looks like:
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)
If the values are not actually all strings, use slice
to get the []interface{}
slice and then inspect the elements individually.
The above is the detailed content of go-redis Eval func return value type when Lua script returns array. For more information, please follow other related articles on the PHP Chinese website!