我有一些产品数据,需要在Redis缓存中存储多个版本。这些数据是JSON序列化的。获取基本数据的过程很昂贵,将其定制为不同版本的过程也很昂贵,因此我希望尽可能地优化缓存所有版本。假设定制是基于单个参数的,并且可以将该参数作为缓存键的一部分使用。
我计划使用的检索产品数据的过程如下:
这一切都很顺利,但现在我正在尝试找出在基础数据源更改时使缓存数据失效的最佳方法。如果基本产品信息发生变化,则所有定制版本也需要过期。当需要进行此操作时,我将收到通知。
请注意,用于自定义产品的参数不易枚举。可能存在大量的参数,因此无法遍历所有可能的键。
Redis似乎没有提供使用通配符过期多个键的能力,并且在查看Redis模式时,我不确定我的方法是否正确。
是否有更好的方式在Redis中缓存此类定制的、半分层数据,以便可以使其过期?
我计划使用的检索产品数据的过程如下:
if cache contains appropriately customised data for this parameter
return customised data from cache
else
if cache contains basic data
get basic data from cache
else
get basic data from primary data source (expensive)
save basic data to cache for next time
apply customisations to basic data (expensive)
save customised version to cache, using the parameter as a key
return customised product
这一切都很顺利,但现在我正在尝试找出在基础数据源更改时使缓存数据失效的最佳方法。如果基本产品信息发生变化,则所有定制版本也需要过期。当需要进行此操作时,我将收到通知。
请注意,用于自定义产品的参数不易枚举。可能存在大量的参数,因此无法遍历所有可能的键。
Redis似乎没有提供使用通配符过期多个键的能力,并且在查看Redis模式时,我不确定我的方法是否正确。
是否有更好的方式在Redis中缓存此类定制的、半分层数据,以便可以使其过期?