【发布时间】:2015-02-16 12:33:00
【问题描述】:
我们目前正在使用jax-rs 编写一个 REST 服务,我们在其中缓存 DB 实体 (javax.persistence.Entity),即数据库中表的对象表示,在 redis 服务器中。在将对象放入redis之前,我们通过jackson将对象序列化为json,当我们需要实体对象时,我们在从redis获取后反序列化它。
我想知道是否有一种更快/性能更高的方式来进行序列化和反序列化。如果有人建议一种更高效的方式而不将对象转换为人类可读格式(如 json)并且我不想要内部语言互操作性,我可以。
如果有人需要更多详细信息,请告诉我。谢谢。
【问题讨论】:
-
我对你所说的库只是稍微熟悉,但我想我理解这个问题。在我看来,问题是你总是需要实体吗?您序列化的每个实体都会被反序列化吗?如果是,那么我认为您的解决方案将达到预期效果。如果不是,也许您可以使用标准序列化来序列化对象,然后在需要使用它时执行 JSON 传输。
-
我对上述库也一无所知,但请考虑使用 Redis 的哈希来存储您的实体。这将使您完全无需序列化/反序列化。
-
@ItamarHaber 但是你将如何存储对象,你需要序列化它。对吗?
-
不一定 - 哈希数据结构包含字段->值映射,这很容易映射到表的行/JSON 格式。一旦您的对象存储在哈希中,您就可以访问各个字段(用于读/写),而无需通过昂贵的反序列化和整个语料库的重新序列化。
标签: java serialization redis jackson