1

我有数百万个对象,我需要将它们保存到缓存中。为了减少这些对象的大小和序列化/反序列化的时间,我使用 protobuf 对象而不是 POJO,然后将它们作为字节数组保存到 Ehcache 中。但是Ehcache会将protobuf字节数组放入一个Ehcache的对象中,然后再将该对象序列化到内存中,所以使用protobuf的优势就没有了。

我可以将 protobuf 对象的字节表示直接保存到 Ehcache 中吗?

4

1 回答 1

0

当您说“Ehcache 会将 protobuf 字节数组放入 Ehcache 的对象”时,我猜您指的是 net.sf.ehcache.Element,对吧?但是“然后将对象序列化到内存中”,你是什么意思?澄清一下,Ehcache 不会序列化任何要存储在堆上的东西。如果您谈论 offHeap 存储,那么是的,东西会被序列化。但是如果你存储字节数组,序列化这些值是......简单的。此外,您不必担心内部数据结构序列化,这些处理非常具体,即使您能够在那里使用 protobuf,您也不会获得任何收益。

但是,将 protobuf 用于域实例与纯 Java 序列化相比,您获得的所有好处都不会丢失。

于 2012-11-22T18:09:04.473 回答