我正在使用memcache(而不是memcached),可能会有10000个请求同时访问缓存,这可能会导致竞态条件,因此我使用了这段代码http://terrychay.com/article/keeping-memcache-consistent.shtml来获取锁,然后设置键。
现在从日志中我发现,当一个请求A在等待缓存时,另一个请求B可能已经完成了数据的获取并将其放入缓存中,因此请求A等待并覆盖数据是没有意义的。
所以我想到的一个解决方案是:当一个请求在等待锁时,它将检查该键是否存在数据。如果存在,则返回键中的数据而不是更新它。还有其他人能想到任何建议吗?在等待锁时检查键是否会使memcache服务器崩溃吗?
现在从日志中我发现,当一个请求A在等待缓存时,另一个请求B可能已经完成了数据的获取并将其放入缓存中,因此请求A等待并覆盖数据是没有意义的。
所以我想到的一个解决方案是:当一个请求在等待锁时,它将检查该键是否存在数据。如果存在,则返回键中的数据而不是更新它。还有其他人能想到任何建议吗?在等待锁时检查键是否会使memcache服务器崩溃吗?