для лучшей производительности разбивки на страницы, вместо того, чтобы делать это в postgresql:
SELECT * FROM message ORDER BY created_at DESC limit 30 offset 30;
Можно ли сохранить идентификаторы в отсортированном наборе redis, а затем просто получить идентификаторы из redis по:
ZREVRANGE message_ids 30 39
И затем запросите эти идентификаторы в postgresql, чтобы получить значения.
Причина, по которой я не сохраняю значение непосредственно в Redis, заключается в том, что оно может быть большим, а оперативная память дорогой.(Мне не хватает оперативной памяти).
Если это рекомендовано или ОК для повышения производительности, как я могу правильно запросить значения из postgresql по идентификаторам?
Я нашел следующие способы и не уверен, что это лучший подход:
SELECT m.*
FROM unnest('{17579, 17580, 17582}'::int[]) id
JOIN message m USING (id);
ИЛИ просто:
SELECT * FROM message WHERE id IN (17579, 17580, 17582);
Вышеприведенный запрос отэта ссылка
Кстати, я также не уверен, что приведенная выше команда выдаст мне правильный порядок, основанный на порядке списка идентификаторов и нужно ли мне ORDER BY id
в конце.
В итоге, будет ли это решение redis + postgresql намного быстрее, чем только решение postgresql?