Предположим, что вы хотите сохранить список последних 10 посетителей вашего сайта в memcache.
Каждый раз, когда кто-то заходит на ваш сайт, вы хотите поместить его в массив и удалить первого посетителя вмассив.
Конечно, потенциальная проблема заключается в том, что несколько посетителей могут перезаписывать и читать этот массив одновременно, возможно, приводя друг к другу в замешательство.Конечно, в memcache нет атомарного push / shift.
Возможный сценарий несогласованности с двумя почти одновременными обращениями пользователей:
- Пользователь A получает массив из memcache
- Пользователь B получает массив из memcache
- Пользователь A изменяет массив (изменения будут потеряны)
- Пользователь B изменяет массив
- Пользователь A хранитмассив в memcache
- Пользователь B хранит массив в memcache (перезапишет изменение A на шаге 3)
Как правильно выполнить что-то подобное, используя memcache?