我正在使用Redis作为缓存服务(Key => Value)@ AWS ElastiCache。
我想在缓存中保存一个包含嵌套对象的对象:
我显然是在序列化我的对象 - 让我们对JSON说 - 所以我的序列化对象看起来像这样:
iex> Version.compare "1.0.0", "2.0.0"
:lt
我想知道以下选项中的最佳做法是什么:
我的胆量认为选项1是最佳实践且效率最高,但我有第二个想法,将大型嵌套对象存储在键上。
答案 0 :(得分:3)
您的方案没有通用的最佳解决方案。这取决于您查询数据的方式。
如果您始终从服务或客户端获取根对象,实际上您将整个JSON存储在字符串键中。
另一方面,如果您还需要查询关联对象,则需要将每个整个对象图存储在字符串键中,但您还需要将每个关联对象存储在哈希{{1}中整个哈希将存储直接关联,其中键将是关联的对象标识符,值是关联的JSON序列化对象。
根据您想要查询根对象和关联对象的方式,您需要将它们分组,排序集和/或列表,甚至其他哈希值。
正如我上面所说,没有明确的解决方案,但你需要做一个很好的案例研究,并考虑如何仔细地将数据存储在Redis中,因为糟糕的数据存储设计会变成你无尽的痛苦项目
将Redis视为数据索引。就像你手动实现关系数据库索引一样。