Как обрабатываются одновременные обновления в Memcached?

Насколько я понимаю, Memcached не имеет блокировки (в конфигурации по умолчанию), так что ни один клиент не может помешать работе любого другого клиента. Если это так, то как Memcached справляется с двумя или более клиентами, пытающимися одновременно обновить один и тот же объект?

Как Memcached обрабатывает несколько версий объекта? Просто взять ту, чье обновление завершилось последней, и удалить остальные версии из кеша? Активно ли база данных делает недействительными объекты, кэшированные на сервере Memcached?


person Chance    schedule 21.04.2013    source источник


Ответы (1)


Memcached хранит только последнюю версию объекта. Если вы получаете, модифицируете и ставите, у вас нет гарантии, что put применяется к тому же значению, что и get. Вы можете использовать операции CAS (gets, cas), если вам нужно синхронизировать.

person Jack    schedule 22.04.2013