PostgreSQL запрос и кеширование данных - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть SQL-запрос:

SELECT p.timestamp,
      COUNT(*) as total,
      date_part('hour', p.timestamp) as hour
      FROM parties as p
      WHERE p.timestamp >= TIMESTAMP 'today' AND p.timestamp < TIMESTAMP 'tomorrow'
      AND p.member_id = 1
      GROUP BY p.timestamp, hour;

, который будет группировать количество людей по часам:

+-------------------------+-------+------+
|        Timestamp        | Total | Hour |
+-------------------------+-------+------+
| 2018-11-21 12:00:00+07  |    10 |   12 |
| 2018-11-21 13:00:00+07  |     2 |   13 |
| 2018-11-21 14:00:00+07  |     2 |   14 |
| 2018-11-21 16:00:00+07  |     1 |   16 |
| 2018-11-21 17:00:00+07  |    21 |   17 |
| 2018-11-21 19:00:00+07  |    18 |   19 |
| 2018-11-21 20:00:00+07  |     8 |   20 |
| 2018-11-21 21:00:00+07  |     1 |   21 |
+-------------------------+-------+------+

Мой вопрос: если я повторно получу какую-то конечную точку API, которая будет запрашиватьВышеизложенное утверждение, будут ли данные за последний час кэшироваться автоматически?потому что в моем случае, если появятся новые данные, будут обновлены только строки последнего часа.

Если нет, то как их кэшировать?Заранее спасибо

1 Ответ

0 голосов
/ 21 ноября 2018

PSQL не может кешировать результат самого запроса.Решением является кэширование результата на прикладном уровне API.
Я предпочитаю использовать redis для его кэширования.Использование hash с fields означает year+month+day+hour, а value - общий онлайн-пользователь каждого часа.Пример:

 hash: useronline
 field: 2018112112 - value: 10
 field: 2018112113 - value: 2

Вы также устанавливаете тайм-аут на ключ.По истечении времени ожидания ключ будет автоматически удален.Я установлю 1 час здесь.

EXPIRE useronline 3600

Когда у нас есть запрос API, мы сначала получим результат в кеше redis.Если для получения результата не существует или истек срок обращения к слою базы данных, снова сохраните его в кэш-памяти.Отправить ответ клиенту.
Вот список клиентов redis , подходящих для языка программирования.

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