Может ли Redis записываться в базу данных, такую ​​как PostgreSQL?

Я использую PostgreSQL в течение самого долгого времени. Все мои данные живут в Postgres. Недавно я просмотрел redis, и у него много мощных функций, которые в противном случае могли бы сделать пару строк в Django (python). Данные Redis сохраняются, поскольку работающий на нем аппарат не работает, и вы можете настроить его для записи данных, хранящихся на диске, каждые 1000 ключей или каждые 5 минут или около того в зависимости от вашего выбора.

Redis создаст отличный кеш, и это, безусловно, заменит множество функций, которые я написал на python (голосование за сообщение пользователя, просмотр их списка друзей и т.д.). Но я обеспокоен тем, что все эти данные будут связаны с тем, как нужно перевести на постгресы. Я не доверяю сохранению этих данных в redis. Я вижу redis как временное хранилище для быстрого извлечения информации. Это очень быстро, и это намного перевешивает выполнение повторяющихся запросов против postgres.

Я предполагаю, что единственным способом я могу технически написать данные redis в базу данных, чтобы сохранить() все, что я получаю из запроса get get из redis, в базу данных postgres через Django.

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

Ответ 1

Redis все чаще используется как слой кэширования, как и более сложный memcached, и очень полезен в этой роли. Обычно вы используете Redis в качестве кэша для записи данных, для которых вы хотите быть долговечными, и для обратной записи данных, которые вы, возможно, захотите скопировать, а затем пакетной записи (где вы можете позволить себе потерять последние данные).

Система PostgreSQL LISTEN и NOTIFY очень полезна для выполнения выборочной недействительности кеша, позволяя вам очищать записи от Redis, когда они обновляются в PostgreSQL.

Чтобы объединить его с PostgreSQL, вы найдете поставщик внешних данных Redis, который очень интересен для Andrew Dunstain и Dave Page

Я не знаю ни одного инструмента, делающего Redis в прозрачном кэше обратной записи для PostgreSQL. Их модели данных, вероятно, слишком разные, чтобы это хорошо работало. Обычно вы записываете изменения в PostgreSQL и аннулируете свои записи кэша Redis, используя команду listen/notify для рабочего менеджера кэша, или вы вносите изменения в Redis, после чего ваше приложение считывает их и записывает их в Pg в кусках.