Php 缓存和竞争条件

Php 缓存和竞争条件,php,caching,race-condition,Php,Caching,Race Condition,我使用的是memcache(不是memcached),可能同时有10000个请求命中缓存。这可能会导致竞争条件,所以我使用此代码获取锁,然后设置密钥 现在从日志记录中我看到,当一个请求A在缓存中等待时,另一个请求B可能会完成数据提取并放入缓存,因此请求A没有等待和覆盖数据的必要 所以我认为一个解决方案是:当请求等待锁定时,它将检查数据是否在密钥处。如果存在,则从键返回数据,而不是更新数据。其他人能想出什么建议吗?等待锁定时检查密钥会导致memcache服务器崩溃吗 我认为不值得对锁获取代码进行太

我使用的是memcache(不是memcached),可能同时有10000个请求命中缓存。这可能会导致竞争条件,所以我使用此代码获取锁,然后设置密钥

现在从日志记录中我看到,当一个请求A在缓存中等待时,另一个请求B可能会完成数据提取并放入缓存,因此请求A没有等待和覆盖数据的必要


所以我认为一个解决方案是:当请求等待锁定时,它将检查数据是否在密钥处。如果存在,则从键返回数据,而不是更新数据。其他人能想出什么建议吗?等待锁定时检查密钥会导致memcache服务器崩溃吗

我认为不值得对锁获取代码进行太多的修补。一旦有了锁,就可以简单地执行
get
操作,如果数据在那里,则清除锁并简单地返回数据,而不必访问数据库


这样做还可以减少总的等待时间。

那么您正在获取、执行一些操作,然后再次更新相同的密钥?这是写锁还是读锁?