在redis缓存中存储重复数据是一种不好的做法吗?
我正在尝试graphql缓存解决方案,但是我有一些表,我通过组合键而不是主键来查询它们,这对我来说似乎有点问题。
让我们考虑一下这些表格
Products - id, ...
Images - id, productId, size
我需要能够得到的图像(多个)通过 productId
或者一行一行 productId
以及 size
.
我现在存储的是
{
images:productId:1:size:sm: {...},
images:productId:1:size:xs: {...},
images:productId:1: ['images:productId:1:size:sm', 'images:productId:1:size:xs']
}
第三个对象包含对产品缓存中所有可用图像的引用,因此我最终执行两个查询来检索数据。
如果我想要一个,我可以直接去拿。如果我想要所有这些,我首先要按第三个键,然后使用其中的键来获取实际对象。
这是个坏主意吗?我是应该费心处理它,还是只使用更简单的形式
{
images:productId:1:size:sm: {...},
images:productId:1:size:xs: {...},
images:productId:1: [ {...}, {...} ] // Copies of the two objects from above
}
为了提供一些上下文,随着时间的推移,其中一些对象可能会变得有点大,因为它们可能包含来自富文本编辑器的长文本/html。
我读到散列可以更好地压缩数据,所以我将它们组织在一个散列中,这样失效也变得更容易(我不在乎使其中一些失效,它们总是一次失效)。
这是一个多租户系统,在这里我将使用租户id将数据范围限定到特定用户。
暂无答案!
目前还没有任何答案,快来回答吧!