我使用lua来保存数据到redis。
第一个月
ARGV 1是go结构。
The go code to pass the struct to redis lua的
这是我的结构看起来像
type InviteInfo struct {
...
MaxPeers int32 `json:"maxPeers"`
RouteVersion int32 `json:"routeVersion"`
...
}
字符串
并使用下面的lua查询数据。
local data = redis.call('GET', KEYS[1])
-- Parse JSON
local inviteInfo = cjson.decode(data)
-- Compare routeVersion
if tonumber(inviteInfo['routeVersion']) ~= tonumber(ARGV[1]) then
return "route version mismatch"
end
型
inviteInfo ['routeVersion']始终为nil
我希望inviteInfo ['routeVersion']应该是数值而不是nil。
我试过lua在本地redis和作品,奇怪的是为什么不工作在分期.. enter image description here
更新,问题已修复
先前的流程是
1.将go结构传递到lua -> cjson.encode ->保存
1.从Redis获取数据-> cjson.decode -> invite.routeVersion(这不起作用)->保存
改为
1.执行struct -> json.marshal -> passstring to lua ->保存
1.从Redis获取数据-> cjson.decode -> invite.routeVersion(这个可以)->保存
区别
我在redis里查询了保存的数据。
以前保存的数据看起来像{\“routeVersion":1}。
更改后,保存的数据类似于{“routeVersion”}
1条答案
按热度按时间3okqufwl1#
最好的办法,肯定会奏效的-
当你在redis中保存数据时,首先初始化struct并在保存之前填充数据字段,使用
json.Marshal
获取字节并保存,在redis中使用SET
命令和fetch使用GET
命令你将获得bytes
中的数据,然后使用json.Unmarshal
检索数据。字符串
编辑1
型