Será que você precisa de Redis? Quando o PostgreSQL oferece filas, locks e pub/sub (2021)
(spin.atomicobject.com)-
Caso de uso 1: fila de tarefas
- O Redis é frequentemente usado em serviços web para coordenar tarefas em segundo plano.
- Desde a versão 9.5 do PostgreSQL, é possível implementar filas de tarefas com a opção
SKIP LOCKED. - Essa opção permite selecionar tarefas sem esperar por locks, garantindo que vários workers não processem a mesma tarefa ao mesmo tempo.
-
Caso de uso 2: locks de aplicação
- O Redis é frequentemente usado para locks distribuídos.
- É possível implementar a mesma funcionalidade usando advisory locks do PostgreSQL.
- Advisory locks permitem aproveitar o mecanismo interno de locks do PostgreSQL para finalidades definidas pela aplicação.
-
Caso de uso 3: Pub/Sub
- O Redis é usado para enviar eventos a clientes ativos.
- Desde a versão 9 do PostgreSQL, as instruções
LISTENeNOTIFYfornecem funcionalidade de Pub/Sub. - Clientes PostgreSQL podem assinar canais de mensagens específicos, e quando outro cliente envia uma mensagem para esse canal, todos os assinantes recebem a notificação.
-
Aproveitando o PostgreSQL ao máximo
- O Redis é usado para fins diferentes do PostgreSQL e se destaca em cache de dados com TTL e armazenamento temporário de dados.
- O PostgreSQL oferece mais do que um banco de dados SQL, e há a possibilidade de substituir pelo PostgreSQL tarefas normalmente feitas com Redis.
- Isso pode ser uma escolha valiosa para reduzir a complexidade de usar vários serviços de dados e cortar custos operacionais.
1 comentários
Opiniões do Hacker News
O Redis oferece tempos de resposta muito rápidos quando roda na mesma máquina que a aplicação. Isso permite coisas diferentes do Postgres
O PostgreSQL oferece mais do que um simples banco de dados SQL
O PGQueuer é uma alternativa mínima que usa PostgreSQL para fornecer fila de tarefas, bloqueios e notificações em tempo real
O Postgres é um banco de dados poderoso
A maioria dos projetos só precisa de uma fila de tarefas simples, e é importante simplificar uma stack complexa
O Postgres tem algumas limitações
É melhor começar com PostgreSQL e migrar para Redis quando necessário
Uma grande desvantagem do pub/sub do Postgres é que o tamanho das mensagens é limitado a 8000 bytes
O cache, uma das aplicações mais importantes do Redis, é mais complexo no Postgres
Ao usar esses recursos no Postgres, atualizações e replicação ficam mais difíceis