【问题标题】:messagepack with redis where size of data is not big带有redis的消息包,其中数据大小不大
【发布时间】:2018-04-30 08:49:51
【问题描述】:

Redis 是一种数据结构存储,但仍建议使用消息包(或 protobuf)来序列化/反序列化数据。如果写入 Redis 的数据块不是很大,我会对 Redis 之上的 Messagepack 感到困惑。

因为,Messagepack 需要根据自己的协议打包和解包数据,并且肯定会产生一些成本,并且打包的数据将仅作为“字符串”数据类型存储在 Redis 上。

为了利用 Redis 作为数据结构服务器,可以编写一个薄层来直接读取/写入 redis 数据结构,比如说在 C++ 和 Python 之间,那么消息包到底适合哪里?

有人可以解释一下 redis 上下文中的消息包吗?

问候,
拉胡尔

免责声明 - 没有冒犯 Messagepack 功能,我知道它真的很棒 :-)

【问题讨论】:

标签: redis msgpack


【解决方案1】:

没有单一的答案,但我可以提供一些指导。

  • Redis 的基本数据类型是字符串 - 它是二进制安全的,最多可容纳 0.5GB(在即将发布的版本中可能会更多)。
  • 键名是字符串,但您通常希望 a) 保持简短 b) 它们是访问数据的唯一方法,因此希望其清晰易读和可重构。
  • 值可以是字符串。如果有效载荷已经是一个字符串 - 不需要序列化/反序列化,只需按原样存储。常见示例:jpg 或 png 文件。
  • 如果您的应用已经在使用 msgpack(或 json 或 protobuff 或...),您可以存储序列化的表单。
  • Redis 的 Lua 具有用于处理 json 和 msgpack 的内置库。
  • 有一些模块(例如http://rejson.io)可以扩展它。

希望对你有帮助。

免责声明:上述模块的作者,Redis 极客,拥有使用 Redis 的 Lua 工作的黑带;)

【讨论】:

  • 谢谢!这回答了我当前的用例,我必须处理字符串值,所以我现在会跳过序列化/反序列化步骤 messagepack )。
猜你喜欢
  • 2011-11-30
  • 1970-01-01
  • 2011-02-04
  • 2012-05-05
  • 2014-06-13
  • 2016-12-22
  • 2011-06-11
  • 2010-09-27
相关资源
最近更新 更多