【问题标题】:Reading Redis key-value which is JSON string using redigo使用 redigo 读取作为 JSON 字符串的 Redis 键值
【发布时间】:2019-12-26 06:24:08
【问题描述】:

我正在尝试在 Go 中读取 Redis Key-val。键是字符串,值是 JSON 字符串。例如-键=

discov_32161296

and Value as Json string=

"{\"10283\":true,\"11064\":true,\"15123\":true,\"15447\":true,\"15926\":true,\"16530\":true,\"16537\":true,\"16799\":true,\"17088\":true,\"17249\":true,\"18501\":true,\"18529\":true,\"18601\":true,\"3044\":true,\"3687\":true,\"4926\":true,\"5483\":true,\"6\":true,\"6675\":true,\"8332\":true,\"8336\":true,\"8674\":true}"

在 Go 中阅读时出现以下错误

redis.Values err redigo: unexpected type for Values, got type []uint8

这是我的代码:

uIDDiscoveryOffer := fmt.Sprintf("%s_%d", "discov", uid)
opDataStr, err := redis.String(redis.Values(con.Do("GET", uIDDiscoveryOffer)))
    if err != nil || err != redis.ErrNil {
        utils.Log1("readCacheTxnByUID-Disc-redis.Values-err", fmt.Sprint("redis.Values err : ", uidDiscoveryOffer, " error: ", err.Error()))
    } else {
         //Some Logic
    }

【问题讨论】:

  • 怎么把Value放到redis中,能把所有相关代码都显示一下吗?
  • 你考虑过使用 RedisJSON 模块吗?
  • @GuyKorland 问题是由于使用了 redis.Values。正确的方法是答案 opDataStr, err := redis.String(con.Do("GET", uIDDiscoveryOffer))

标签: string go redis redigo


【解决方案1】:

Redis GET 返回一个键的值。 redis.Values() 可用于转换返回多个项目的命令的结果。

由于GET返回单个项目,所以只使用redis.String(),这里不需要redis.Values()

opDataStr, err := redis.String(con.Do("GET", uIDDiscoveryOffer))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多