CakePHP и пессимистическая блокировка: база данных против кеша - PullRequest
1 голос
/ 07 февраля 2012

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

В целом, запрос будет:

  • 3, когда страница загружена (очистить всезаблокировать старше 1 часа (УДАЛИТЬ), проверить, не используется ли уже страница (ВЫБРАТЬ), а если нет, создать блокировку (ВСТАВИТЬ));
  • 2 при обновлении блокировки (проверьте, не заблокирована ли уже страница (ВЫБРАТЬ), если нет, обновите отметку времени блокировки (ОБНОВЛЕНИЕ));

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

1 Ответ

0 голосов
/ 29 марта 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...