Лучшее решение для php-кэша, который обновляется несколько раз в секунду - PullRequest
0 голосов
/ 13 июня 2019

Я создаю приложение форума на PHP.Когда пользователь переходит на первую страницу форума, он получает 25 последних обновленных тем.

Я хочу кешировать эти 25 тем, чтобы база данных никогда не вызывалась для получения первой страницы, вот как она будет работать:

  • Кэш обновляется каждый раз, когдасообщение пользователя по теме / создает тему
  • Эта тема добавлена ​​в кеш
  • Самая старая обновленная тема удаляется из кеша

Таким образом, кешвсегда содержит последние 25 обновленных тем, и сервер никогда не отправляет запрос в базу данных для получения первой страницы форума.

Я уже искал в Интернете, чтобы найти решения:

  • APCu
  • Redis
  • Memcached

Если первая страница моего форума получает 100 запросов на получение и 10 новых сообщений в секунду, кэш будет обновляться 10 раз засекунд, при запросе 100 раз в секунду.

Какое решение лучше всего подходит для такого типа кэша, который обновляется очень часто?

1 Ответ

0 голосов
/ 13 июня 2019

Кэш обновляется каждый раз, когда пользователь публикует тему / создает тему

Я бы прекратил это делать.

Вместо этого установите истекающий срок действиякэш (с таймфреймом, который соответствует вашим потребностям; каждую секунду, каждые 10 секунд, каждую минуту, каждые пять) списка, который вы показываете на главной странице.Вполне нормально, если кто-то не увидит новое сообщение 500 миллисекунд назад.

Когда срок действия этого кэша истечет, он будет обновлен с новым списком.

В качестве альтернативы, вы можете использовать Redis's список функций через LPUSH для добавления новых сообщений в список и удаления старых с помощью LTRIM .Ваши вызовы кеша получили бы доступ к списку;сам список никогда не очищается , просто добавляется к.

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