¿Hace falta Redis? PostgreSQL ofrece funciones de cola, bloqueo y pub/sub (2021)
(spin.atomicobject.com)-
Caso de uso 1: cola de trabajos
- Redis se usa con frecuencia para coordinar trabajos en segundo plano en servicios web.
- Desde PostgreSQL 9.5, se puede implementar una cola de trabajos usando la opción
SKIP LOCKED. - Esta opción permite seleccionar trabajos sin esperar bloqueos, garantizando que varios workers no procesen el mismo trabajo al mismo tiempo.
-
Caso de uso 2: bloqueos de aplicación
- Redis se usa con frecuencia para bloqueos distribuidos.
- Se puede implementar la misma funcionalidad usando bloqueos consultivos de PostgreSQL.
- Los bloqueos consultivos permiten aprovechar el motor interno de bloqueos de PostgreSQL para fines definidos por la aplicación.
-
Caso de uso 3: Pub/Sub
- Redis se usa para enviar eventos a clientes activos.
- Desde PostgreSQL 9, se ofrecen funciones de Pub/Sub mediante las sentencias
LISTENyNOTIFY. - Los clientes de PostgreSQL pueden suscribirse a un canal de mensajes específico, y cuando otro cliente envía un mensaje a ese canal, todos los suscriptores reciben una notificación.
-
Aprovechar PostgreSQL al máximo
- Redis se usa para fines distintos a PostgreSQL y destaca en el caché de datos con TTL y en el almacenamiento temporal de datos.
- PostgreSQL ofrece más que una base de datos SQL, y existe la posibilidad de reemplazar con PostgreSQL tareas para las que normalmente se usa Redis.
- Puede ser una opción valiosa para reducir la complejidad de usar varios servicios de datos y bajar los costos operativos.
1 comentarios
Opiniones en Hacker News
Redis ofrece tiempos de respuesta muy rápidos cuando se ejecuta en la misma máquina que la aplicación. Eso permite hacer cosas distintas a las de Postgres
PostgreSQL ofrece más que una simple base de datos SQL
PGQueuer es una alternativa mínima que usa PostgreSQL para ofrecer colas de trabajos, bloqueos y notificaciones en tiempo real
Postgres es una base de datos potente
La mayoría de los proyectos solo necesitan una cola de trabajos simple, y es importante simplificar un stack complejo
Postgres tiene algunas limitaciones
Conviene empezar con PostgreSQL y cambiar a Redis cuando haga falta
Una gran desventaja del pub/sub de Postgres es que el tamaño de los mensajes está limitado a 8000 bytes
El caché, una de las aplicaciones más importantes de Redis, es más complejo en Postgres
Al usar estas funciones en Postgres, las actualizaciones y la replicación se vuelven más difíciles