我正在寻找一种与 memcache 非常相似的缓存解决方案,但我非常想念的一件事是基于标签使内容无效。许多预处理结果依赖于多个数据源,而一个数据源会导致多个结果。更改数据源应该级联到使这些缓存无效。
当然,我可以将标签存储为密钥,并列出由该标签生成或依赖该标签的其他密钥,但由于速度提升至关重要,我宁愿不多次往返。对于具有此功能的非永久、过期的内存数据存储,我有哪些替代方案?
答案1
解决方案是给每个键设置一个变量号,您可以使用该变量号使所有相关数据无效。
例如使用 xxx_datakey 来存储所有需要一起失效的数据。yyy_datakey 来存储另一组需要一起失效的数据
xxx 是您存储在 memcacace 中的数字,每个交易只需读取一次。并且只有在发生变化时才存储。
如果您想使所有以 xxx 开头的组无效,只需在 memcache 中增加 xxx 值。
答案2
一个替代方案是缓存. 它支持类似键空间的分层文件系统。
相互依赖的数据可以存储在共同的父键下,并通过清除该父键来使其过期。如果有多个标签需要清除,也可以在单个网络请求中打包多个清除。