2 points par GN⁺ 2024-11-04 | 1 commentaires | Partager sur WhatsApp
  • 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 LISTEN et NOTIFY permettent 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

 
GN⁺ 2024-11-04
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

    • Un store clé-valeur en mémoire est adapté aux tâches qui nécessitent les caractéristiques de performance de la RAM
    • Il est évident qu’on ne peut pas obtenir les performances de la RAM via une connexion réseau
  • PostgreSQL offre plus qu’une simple base de données SQL

    • Si l’on n’utilise la base de données que derrière un ORM, on risque de passer à côté de ses fonctionnalités
    • Il peut être préférable d’exploiter la base de données déjà en place plutôt que d’ajouter un service comme Redis
  • 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

    • Cela réduit le besoin de Redis
  • Postgres est une base de données puissante

    • Redis a une faible barrière à l’entrée, offre de hautes performances et réduit la charge sur la base de données principale
    • La mise en cache des réponses d’API est aussi possible avec Postgres, mais c’est plus simple avec Redis
    • Utiliser un système séparé a des inconvénients, mais dans le cas de Redis ils ne sont pas si importants
  • La plupart des projets n’ont besoin que d’une file de tâches simple, et il est important de simplifier une stack complexe

    • Il existe diverses alternatives avec des intérêts commerciaux variés
  • Postgres a certaines limites

    • Il peut couvrir des fonctions comme KVstore, les files, le pub/sub et les verrous, mais ce n’est pas simple
  • Il vaut mieux commencer avec PostgreSQL et passer à Redis quand le besoin s’en fait sentir

    • Il est important de minimiser le nombre de composants en mouvement
  • Un gros inconvénient du pub/sub de Postgres est que la taille des messages est limitée à 8000 octets

    • On peut stocker les données dans la base et n’envoyer que l’ID, mais cela demande du travail supplémentaire
  • Le cache, l’un des usages les plus importants de Redis, est plus complexe avec Postgres

    • Les mises à jour de Postgres coûtent plus cher que les insertions, et les garanties de durabilité ne sont pas importantes pour le cache
  • Utiliser ces fonctionnalités dans Postgres rend aussi les mises à jour et la réplication plus difficiles

    • C’est possible, mais on peut préférer se concentrer sur les fonctionnalités de Postgres les plus couramment utilisées