3

我正在研究实现 Redis 以在 ASP.Net Web 应用程序中缓存数据。

我想知道的是,在存储到 Redis 之前是否值得通过 Protobuf-net 序列化某些类型(字符串、布尔值、int 和其他原语),还是无论如何都要序列化?

我主要对存储/检索的速度感兴趣,所以我意识到使用某些字符串,protobuf 将通过减少网络流量来发挥作用,尽管序列化开销很小。

(是的,我知道字符串不是原始的)

如果有帮助,我正在使用 StackExchange.Redis。

4

1 回答 1

4

Redis 将所有值存储为二进制字符串,尽管 IIRC 有一些特殊的“字符串”大小写,作为 ASCII,看起来与整数完全一样。对于单个原始值,在存储空间方面不会有任何显着差异,因此如果方便,我会避免添加额外的 protobuf-net 层。这也可能允许 SE.Redis 在许多情况下对值进行特殊处理——并且它避免了一些额外的分配,例如MemoryStreamor byte[]。无论哪种方式,它都不会很大,但既然他们不给你买任何东西:为什么要使用它们?

T是结构化对象数据时,这个问题变得更加有趣。

于 2014-11-21T23:10:32.907 回答