【发布时间】:2018-04-30 08:49:51
【问题描述】:
Redis 是一种数据结构存储,但仍建议使用消息包(或 protobuf)来序列化/反序列化数据。如果写入 Redis 的数据块不是很大,我会对 Redis 之上的 Messagepack 感到困惑。
因为,Messagepack 需要根据自己的协议打包和解包数据,并且肯定会产生一些成本,并且打包的数据将仅作为“字符串”数据类型存储在 Redis 上。
为了利用 Redis 作为数据结构服务器,可以编写一个薄层来直接读取/写入 redis 数据结构,比如说在 C++ 和 Python 之间,那么消息包到底适合哪里?
有人可以解释一下 redis 上下文中的消息包吗?
问候,
拉胡尔
免责声明 - 没有冒犯 Messagepack 功能,我知道它真的很棒 :-)
【问题讨论】:
-
我使用MessagePack作为redis的key。它包含在 name:string 和 id:64 位无符号整数中。在这种情况下,我使用 MessagePack ARRAY github.com/msgpack/msgpack/blob/master/… 的 str github.com/msgpack/msgpack/blob/master/… 和整数 github.com/msgpack/msgpack/blob/master/… 。我通过 redis 上的 EVAL 命令使用 lua cmsgpack 函数redis.io/commands/eval#cmsgpack。优点的大小比 id 的字符串小。并且易于来回转换。