lua - 在redis lua中解码msgpack

标签 lua redis msgpack

public class MsgPackInRedis {
    private String ip;
    private int port;
    private String session;
    private String protocol;
}
MsgPackInRedis msgPackStringInRedis = new MsgPackInRedis();

我用msgpack对MsgPackInRedis类的java对象msgPackStringInRedis进行编码,然后存储在redis中。 我想在lua中解码它,它在redis中运行,我怎样才能得到“session”? 我可以像下面这样做,通过索引 3 获取 session 吗?

local msgPackObject = cmsgpack.unpack(msgPackStringInRedis)
local session = msgPackObject[3]

最佳答案

MessagePack 是一种编码 - 想想不易阅读的 JSON。事实上,这个网站在两者之间进行了来回翻译:http://kawanet.github.io/msgpack-lite/

将 (0x94 0xc0 0x00 0xa4 0x41 0x42 0x43 0x44 0xc0) 提供给上述网站,您可以看到如下所示的 JSON 表示形式:

[
  null,
  0,
  "ABCD",
  null
]

您也可以在 Redis 的 Lua 中进行测试,例如(请注意,Lua 5.1 接受十进制字节表示,因此示例中相同负载的不同表示):

$ redis-cli EVAL "return(cmsgpack.unpack('\148\192\00\164\65\66\67\68\192')[3])" 0
"ABCD"

坦率地说,我认为您的代码没有问题。您遇到的具体问题是什么?

关于lua - 在redis lua中解码msgpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44500846/

相关文章:

c++ - msgpack 的 object_with_zone 有什么作用?

lua - 魔兽世界 LUA API UnitClass() 返回 nil 值

lua - 如何提取非固定字符串的数据

ruby-on-rails - 动态计划在 resque fork 新流程时丢失

sql - 多字符串匹配性能

Java MessagePack 空检查

java - MsgPack第三方对象序列化

Lua:帮助函数:我可以提取函数的名称吗?

c - 你如何创建一个调用c lua api的lua插件?

Redis 值更新