Redis est-il nécessaire ? PostgreSQL fournit la mise en file d’attente, le verrouillage et le pub/sub (2021)
(spin.atomicobject.com)-
Cas d’usage 1 : mise en file d’attente des tâches
- Redis est souvent utilisé dans les services web pour orchestrer les tâches en arrière-plan.
- Depuis PostgreSQL 9.5, il est possible d’implémenter une file d’attente de tâches avec l’option
SKIP LOCKED. - Cette option permet de sélectionner des tâches sans attendre un verrou, garantissant que plusieurs workers ne traitent pas simultanément la même tâche.
-
Cas d’usage 2 : verrouillage applicatif
- Redis est souvent utilisé pour le verrouillage distribué.
- Il est possible d’implémenter la même fonctionnalité avec les verrous consultatifs de PostgreSQL.
- Les verrous consultatifs permettent d’exploiter le moteur de verrouillage interne de PostgreSQL pour des besoins définis par l’application.
-
Cas d’usage 3 : Pub/Sub
- Redis est utilisé pour pousser des événements vers des clients actifs.
- Depuis PostgreSQL 9, les instructions
LISTENetNOTIFYpermettent de fournir une fonctionnalité Pub/Sub. - Les clients PostgreSQL peuvent s’abonner à un canal de messages spécifique, et lorsque d’autres clients envoient un message sur ce canal, tous les abonnés reçoivent une notification.
-
Exploiter pleinement PostgreSQL
- Redis est utilisé à des fins différentes de PostgreSQL, et excelle dans la mise en cache de données avec TTL ainsi que dans le stockage de données temporaires.
- PostgreSQL offre plus qu’une simple base de données SQL, avec la possibilité de remplacer par PostgreSQL certaines tâches habituellement confiées à Redis.
- Cela peut être un choix pertinent pour réduire la complexité liée à l’utilisation de plusieurs services de données et diminuer les coûts d’exploitation.
1 commentaires
Avis Hacker News
Redis offre un temps de réponse très rapide lorsqu’il s’exécute sur la même machine que l’application. Cela permet des usages différents de ceux de Postgres
PostgreSQL offre plus qu’une simple base de données SQL
PGQueuer est une alternative minimale basée sur PostgreSQL pour fournir une file de tâches, du verrouillage et des notifications en temps réel
Postgres est une base de données puissante
La plupart des projets n’ont besoin que d’une file de tâches simple, et il est important de simplifier une stack complexe
Postgres a certaines limites
Il vaut mieux commencer avec PostgreSQL et passer à Redis quand le besoin s’en fait sentir
Un gros inconvénient du pub/sub de Postgres est que la taille des messages est limitée à 8000 octets
Le cache, l’un des usages les plus importants de Redis, est plus complexe avec Postgres
Utiliser ces fonctionnalités dans Postgres rend aussi les mises à jour et la réplication plus difficiles