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

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

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

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

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

1 ответ

Решение

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

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

Для того, чтобы объединить его с PostgreSQL, вы найдете провайдера внешних данных Redis, над которым Эндрю Данстейн и Дейв Пейдж работают очень интересно.

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

Redis является постоянным, если он настроен таким образом, как с помощью снимков, так и с помощью своего рода WAL, называемого AOF. Множество людей используют его в качестве основного хранилища данных. https://redis.io/topics/persistence

Если кто-то имеет в виду большой мир хранилищ данных, совместимых с Redis (соответственно протоколом), многие из них не ограничиваются хранением в памяти: https://keydb.dev/ http://ssdb.io/ и многие другие...


Другие вопросы по тегам