如何检测和调试过时的缓存条目?

Sha*_*eem 5 php debugging memcached caching

我正在使用memcached与PHP尝试进行大量缓存以避免数据库读取.我在更新时使缓存失效(应用程序无效).但是,陈旧的缓存数据正成为一个大问题.大多数情况下,这是由于失效中的错误(使错误的密钥无效或忘记在UPDATE上使缓存条目无效).

在开发/生产过程中有没有什么好方法可以检测/调试这些类型的错误?

Ant*_*lev 0

您可以使用乐观并发控制,这涉及到向表中再添加一列(时间戳或等效列,或者只是一个普通的 int)并在执行更新时使用它。以下是您可以如何使用它(如果普通 int 是“版本标记”):

update BlogPost set PublishedOn = :publishedOn, VersionTag = VersionTag + 1
where ID = :id and VersionTag = :versionTag
Run Code Online (Sandbox Code Playgroud)

假设时间戳由 DBMS 自动更新,那么时间戳的处理方式如下:

update BlogPost set PublishedOn = :publishedOn
where ID = :id and Timestamp = :timestamp
Run Code Online (Sandbox Code Playgroud)