如何使用 memcached 使更新的记录失效


How do I use memcached to invalidate updated records?

在我们的网站上,我们有各种各样的数据收集。我们按 ID 拉取了很多记录,我们也有一些记录是分页内容。

我们使用 memcached 缓存我们的查询 - 我们本质上序列化查询数组,然后md5()它。这为我们提供了一个用于此特定查询的密钥。但是,此查询可以返回多个记录 - 如果其中一个记录发生更改,我们希望使导致返回该记录的缓存查询无效。

实现这一目标的最佳方法是什么?我考虑过有两个内存缓存实例的想法,如果你愿意的话,其中一个就像索引服务器一样。

谢谢!

解决此问题的方法之一(如果我没看错的话),是使用 MD5 键存储 ID 集合,然后分别存储这些行。因此,例如,如果您最终查询集合并且它返回了 10 个结果,则只能通过查询键的 MD5 保存 ID。对于每个 ID,您将查询数据库并获取完整详细信息,这些详细信息单独存储在 memcached 中。当单个项目是更新时,现在可以更轻松地使 memcache 条目失效。这些记录更新现在不会影响集合,因为您只存储了 ID。希望这有帮助。