Memcached - GET和SET操作是原子的吗?

Mar*_*tin 5 concurrency memcached high-availability

这是一个场景:一个查询memcached缓存的简单网站.每10-15分钟由批处理作业更新相同的缓存.有了这种模式,有什么可能出错(例如缓存未命中)?

我担心可能发生的所有可能的比赛情况.例如,如果网站对memcached中缓存的对象执行GET操作,而批处理作业覆盖了同一对象,那么会发生什么?

Sea*_*tag 6

我最初的本能是你应该能够从没有副作用的memcached缓存中读/写(除了由于竞争条件导致过时数据的可能性).

关于memcached的FAQ:

memcached原子?除了你可能遇到的任何错误,是的所有命令都是内部原子的.同时发行多套没有任何不良影响,除了最后一个是坚持的.

在不了解您的具体情况的情况下,我无法就缓存未命中是否可能提出建议,但我确实概括了缓存应该是寻求数据的第一层,而不是唯一的层; 我仍然会在缓存后面有一个数据库或其他来源来处理所有缓存未命中.