我有一些产品数据需要在Redis缓存中存储多个版本。数据是JSON序列化的。获取普通(基本)数据的过程非常昂贵,将其定制到不同版本的过程也很昂贵,因此我希望尽可能地缓存所有版本以进行优化。我们假设自定义基于单个参数,我可以将该参数用作缓存键的一部分。
我计划用来检索产品数据的过程是这样的:
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模式,我不确定我是否正确地接近了这个。< / p>
有没有更好的方法在Redis中缓存这种自定义的半分层数据,以便它可以过期?