将对象保存在缓存中的最佳做法

时间:2015-09-07 08:24:13

标签: json caching amazon-web-services redis

我正在使用Redis作为缓存服务(Key => Value)@ AWS ElastiCache。

我想在缓存中保存一个包含嵌套对象的对象:

  • Object1 - 包含Object2的实例

我显然是在序列化我的对象 - 让我们对JSON说 - 所以我的序列化对象看起来像这样:

iex> Version.compare "1.0.0", "2.0.0"
:lt

我想知道以下选项中的最佳做法是什么:

  1. 在我的密钥下将整个object1存储为完整的JSON。
  2. 使用自己的密钥存储object2,并在object1序列化中将object2密钥作为引用,当从缓存中拉回时,也可以通过其密钥拉取object2。
  3. 我的胆量认为选项1是最佳实践且效率最高,但我有第二个想法,将大型嵌套对象存储在键上。

1 个答案:

答案 0 :(得分:3)

您的方案没有通用的最佳解决方案。这取决于您查询数据的方式。

如果您始终从服务或客户端获取根对象,实际上您将整个JSON存储在字符串键中。

另一方面,如果您还需要查询关联对象,则需要将每个整个对象图存储在字符串键中,但您还需要将每个关联对象存储在哈希{{1}中整个哈希将存储直接关联,其中键将是关联的对象标识符,值是关联的JSON序列化对象。

根据您想要查询根对象和关联对象的方式,您需要将它们分组,排序集和/或列表,甚至其他哈希值。

正如我上面所说,没有明确的解决方案,但你需要做一个很好的案例研究,并考虑如何仔细地将数据存储在Redis中,因为糟糕的数据存储设计会变成你无尽的痛苦项目

将Redis视为数据索引。就像你手动实现关系数据库索引一样。