RedisJSON 与 Jackson ObjectMapper

问题描述 投票:0回答:1

Redis 中有两种处理 JSON 的方法:

  1. 使用 Jackson ObjectMapper 将数据存储到 Redis 之前进行序列化,然后在检索数据时进行反序列化。

  2. 使用RedisJSON模块直接存储和查询JSON数据,无需序列化和反序列化。


两者之间的区别在于,使用

RedisJSON module
允许在 Redis 服务器上处理处理,而使用
Jackson ObjectMapper
则需要 应用程序 来处理处理。

考虑到性能、负载、瓶颈等因素,我很好奇哪种方法更适合不同的场景。

redis jackson objectmapper
1个回答
0
投票

这是一个有点宽泛的问题,但让我尝试给出一个非常简短的总结,重点关注主要区别。当然,根据用例,这些考虑因素可能重要也可能不重要。

使用哈希作为支持的实现

  • 要求获取整个 JSON 文本,即使只需要读取其中的一部分,例如数组的一个元素
  • 需要修改时,要求存储整个 JSON 文本(通过线路传输)

使用RedisJSON模块实现

  • 允许通过指定元素的 JSON 路径来读取和修改 JSON 文本的细粒度部分
  • 允许考虑数据类型的修改,例如递增存储在数组中的数字或切换布尔值(无需先读取数据)
  • 允许检查 JSON 文本的结构而无需阅读它,例如读取数组长度、识别数据类型等

所有后者最终都会带来性能改进,因为它们既会减少通过线路发送的数据量,又会减少在某些情况下解析数据的需要。在这两种情况下,请考虑增加存储在数组中的数字:

情况 1 - 需要获取整个 JSON 文本(如果它大于相关数组 - 包括所有不相关的数据);那么必须应用该路径才能到达数组 n 问题;那么该值需要反序列化,因此递增;然后需要将数据序列化回来并返回到服务器;

情况 2 - 需要向服务器发送一条命令,指示要增加的元素的路径

© www.soinside.com 2019 - 2024. All rights reserved.