CakePHP и пессимистическая блокировка: база данных против кеша

Я реализовал пессимистическую блокировку в своем приложении CakePHP, совместно используемом разными контроллерами. По сути, при доступе к странице в таблицу записывается запись, указывающая, что эта запись этой модели редактируется этим пользователем, с отметкой времени. Каждые 30 секунд при вызове ajax эта временная метка этой записи обновляется, указывая на то, что страница все еще используется. Если кто-то попытается войти на страницу, доступ будет запрещен. Если страница оставлена, «блокировка» истекает по истечении этих 30 секунд.

В общем, запрос:

  • 3 при загрузке страницы (очистить все блокировки старше 1 часа (DELETE), проверить, не используется ли страница (SELECT), и если нет, создать блокировку (INSERT));
  • 2 при обновлении блокировки (проверьте, не заблокирована ли страница (SELECT); если это не так, обновите временную метку блокировки (UPDATE));

Мне интересно, следует ли мне использовать систему Cache, поскольку это не постоянное хранилище данных (которое, очевидно, должно использовать базу данных), а просто что-то временное. Может ли это быть быстрее, чем база данных? (но я не уверен, так как мой кеш - это просто файловый кеш).


person entropid    schedule 07.02.2012    source источник
comment
не уверен, понимаю ли я ваш вопрос, в вашем конкретном случае рекомендуется использовать кеш cakephp?   -  person del_dan    schedule 08.02.2012
comment
Ну, я должен хранить в течение 30 секунд, что страница редактируется. Мне интересно, если использование базы данных слишком «дорого по ресурсам», чем просто использование простого кеша.   -  person entropid    schedule 08.02.2012
comment
В зависимости от количества пользователей должны быть временные таблицы, но поскольку я не думаю, что вам нужно редактировать кеш, это уместно.   -  person del_dan    schedule 08.02.2012


Ответы (1)


Для этого вы можете использовать Redis. Это база данных хранения ключей/значений в памяти, и мы использовали ее для полного кэширования страниц в приложении, и она работает просто отлично.

Для CakePHP 2 в разработке находится Redis Cache Engine. Вот старый (не проверенный) механизм кэширования для Cake https://github.com/plastic/redis-cache-cakephp.

Также есть источник данных для CakePHP2, но я сейчас не помню ссылку, извините.

person floriank    schedule 29.03.2012