php – 缓存和竞争条件
我正在使用memcache(不是memcached),我可能同时有10000个请求命中缓存.这可能会导致竞争条件,因此我使用此代码 http://terrychay.com/article/keeping-memcache-consistent.shtml获取锁定而不是设置密钥. 现在从日志记录中我看到,当一个请求A在缓存上等待时,其他请求B可能完成获取数据并放入缓存,因此没有请求A等待并覆盖数据
我正在使用memcache(不是memcached),我可能同时有10000个请求命中缓存.这可能会导致竞争条件,因此我使用此代码
http://terrychay.com/article/keeping-memcache-consistent.shtml获取锁定而不是设置密钥.
现在从日志记录中我看到,当一个请求A在缓存上等待时,其他请求B可能完成获取数据并放入缓存,因此没有请求A等待并覆盖数据.
所以我认为一个解决方案是:当请求正在等待锁定时,它将检查数据是否在密钥处.如果它在那里而不是从密钥返回数据而不是更新它.任何人都可以想到任何建议吗?在等待锁定爆炸memcache服务器的同时检查密钥?
解决方法
我认为不值得修改锁定采集代码.一旦你有了锁,你可以简单地做一个get,如果数据在那里,清除锁并简单地返回数据而不会访问数据库.
这样做还应该减少整体等待时间.
@H_403_26@
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。