如何从表值Redis Lua脚本中检索值

问题描述 投票:0回答:1

我试图从Redis中的有序集返回的json编码字符串中提取值。

127.0.0.1:6379> eval 'local r= redis.call("ZRANGEBYSCORE", "iprange:locations", 34625535, "+inf", "LIMIT", 0, 1); return type(r);' 0
"table"
127.0.0.1:6379> eval 'local r= redis.call("ZRANGEBYSCORE", "iprange:locations", 34625535, "+inf", "LIMIT", 0, 1); return r;' 0
1) "{\"countryCode\": \"IT\", \"countryName\": \"Italy\"}"

我只是想从结果中提取countryValue

尝试return r.countryCode;return r["countryCode"];,但他们都返回(nil)

顺便说一句,我通过将这个json解码为数据,在我的app中处理这个json编码的字符串。只是尝试将这个简单的任务委托给Redis Lua脚本引擎。

redis lua
1个回答
2
投票

使用built-in JSON library

eval 'local  r = redis.call("ZRANGEBYSCORE", "iprange:locations", 34625535, "+inf", "LIMIT", 0, 1);
      return cjson.decode(r[1])["countryCode"];'

请注意,ZRANGEBYSCORE返回一个结果数组,由Lua表示为table。大概你想要循环结果并为每个提取countryCode

© www.soinside.com 2019 - 2024. All rights reserved.