我有一些产品数据需要在Redis缓存中存储多个版本。该数据由JSON序列化对象组成。获取基本数据的过程很昂贵,将其定制为不同版本的过程也很昂贵,因此我希望尽可能地缓存所有版本以进行优化。数据结构大致如下:
这里的基本思路是:
问题出在我可能需要以几种方式使数据失效:
如果基础产品数据发生更改,则整个树都需要无效化并重新生成。我可以通过将整个结构存储在哈希表中,并通过其键删除哈希表来实现此目的。 如果产品的第一组定制(即中间层)发生更改,则我还需要使该级别下面的节点失效。例如,如果CustomisedProductA的定制受到更改的影响,则需要使CustomisedProductA、CustomisedProductA1和CustomisedProductA2过期。 如果产品的第二组定制(即底层)发生更改,则需要使该节点失效。我可以通过调用
我的问题是:是否有一种表示这种多级数据结构的方法,可以在允许将数据存储在多个级别的同时使树的部分失效?或者,我只能使整个树过期(
BaseProduct
/\
/ \
/ \
/ \
/ \
CustomisedProductA CustomisedProductB
/ \ / \
CustomisedProductA1 CustomisedProductA2 CustomisedProductB1 CustomisedProductB2
这里的基本思路是:
- 在数据库中存储了一个基础产品。
- 可以对该产品应用一级定制——例如,关于特定版本产品在销售区域的信息。
- 可以在其中应用第二级定制——例如,在区域内的特定商店中关于该产品的信息。
问题出在我可能需要以几种方式使数据失效:
如果基础产品数据发生更改,则整个树都需要无效化并重新生成。我可以通过将整个结构存储在哈希表中,并通过其键删除哈希表来实现此目的。 如果产品的第一组定制(即中间层)发生更改,则我还需要使该级别下面的节点失效。例如,如果CustomisedProductA的定制受到更改的影响,则需要使CustomisedProductA、CustomisedProductA1和CustomisedProductA2过期。 如果产品的第二组定制(即底层)发生更改,则需要使该节点失效。我可以通过调用
HDEL key field
(例如,HDEL product CustomisedProductA:CustomisedProductA1
)在哈希表中实现这一点。我的问题是:是否有一种表示这种多级数据结构的方法,可以在允许将数据存储在多个级别的同时使树的部分失效?或者,我只能使整个树过期(
DEL key
)或特定节点(HDEL key field
),而无法做到中间状态的失效?