I have previously been using this:
data, err := redis.Bytes(c.Do("GET", key))
to make sure that data returned is a slice of bytes.
However, I now need to add an extra command to the Redis request so I have something like this:
c.Send("MULTI")
c.Send("GET", key)
c.Send("EXPIRE", key)
r, err := c.Do("EXEC")
but now I can't seem to make the GET
command return a slice of bytes. I've tried adding redis.Bytes
like below but no luck.
c.Send("MULTI")
redis.Bytes(c.Send("GET", key))
c.Send("EXPIRE", key)
r, err := c.Do("EXEC")
In redis, the EXEC
command returns an array containing the results of all the commands in the transaction.
redigo provides a Values
function, which converts an array command reply to a []interface{}
.
c.Send("MULTI")
c.Send("GET", key)
c.Send("EXPIRE", key)
r, err := redis.Values(c.Do("EXEC"))
r[0]
now has the reply from your GET
command as a interface{}
, so you'll need to do a type assertion to get the slice of bytes you're expecting:
data := r[0].([]byte)
References
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With