gpt4 book ai didi

java - redis 中总是需要 protobuf 吗?

转载 作者:IT王子 更新时间:2023-10-29 05:58:47 31 4
gpt4 key购买 nike

我正在使用 Redis 开发键值存储。我建议使用 String(key)-->Object(value) 类型的 hashmap。我被建议使用 protobuf serilaize 对象。

如果我们要使用 Java(独立于平台)填充和读取这些数据,使用 protobuf 有什么优势吗?将对象直接放入 redis 并取回并转换它会导致任何问题吗?

该产品非常注重效率,因此我们不想做任何不必要的处理。

最佳答案

redis完全没必要用protobuf;关键通常很简单:选择一个能够在今天、明天和明年可靠地取回数据的序列化框架。您也可以使用 json、xml 等。在许多情况下,单个字符串值绰绰有余,可以完全绕过序列化(除非您将“编码”算作序列化)。

我通常建议不要使用平台专有的序列化,因为如果您需要在几年后用(比如说)C++ 恢复数据,它们可能对您没有帮助,而且它们在版本控制方面通常不太灵活。

Protobuf 是一个合理的选择,因为它具有以下关键特性:

  • 小输出(减少应用程序和 redis 之间的带宽,以及存储要求)
  • CPU 高效处理(减少应用中的处理)
  • 专为版本容错而设计
  • 跨平台

但是,其他序列化器也可以工作。您甚至可以只使用纯文本和一个 Redis 哈希,即每个对象属性一个哈希属性。但是,在大多数情况下,您想要获取整个对象,因此简单的“获取”并将数据交给合适的序列化 API 通常更为合适。

在我们自己使用 redis 的过程中,我们确实碰巧使用了 protobuf,但我们也做了一个推测“protobuf 输出是否完全使用 gzip 压缩?” - 如果是,我们发送 gzip 数据(或者我们存储原始未压缩数据,如果较小 - 显然是一个标记来说明它是什么)。

关于java - redis 中总是需要 protobuf 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10912186/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com