Forum PHP 2023 : Streams, nous sous-estimons tous Predis !

Redis, c’est du cache, mais c’est aussi bien plus. Connaissez vous les Streams ? Leurs cas d’usages sont infinis : que ce soit pour l’écriture de logs, l’agrégation de données, les notifications, ou même l’écriture d’un énorme fichier. On peut facilement imaginer qu’en couplant les Streams aux générateurs de PHP, les performances d’un tel système peuvent dépasser toutes les attentes.

Date : 13/10/2023 de 14h20 à 14h40

Nom des conférenciers : Alexandre DAUBOIS

Image Forum PHP 2023 Predis

Qu’est ce que Redis ?

Redis est un système de Cache écrit en C, il stocke en mémoire et fonctionne à base de clef/valeur.

Pour trouverez plus d’infos sur ces concepts dans les articles suivants présents sur notre blog :

Image Forum PHP 2023 Predis

La problématique soulevée lors de cette présentation était la suivante : comment mettre en ligne des fichiers volumineux sur des serveurs Cloud en passant par Redis ?

Image Forum PHP 2023 Predis

Les Streams dans Redis

Les structures Stream dans Redis sont assez récentes, elles ont été ajoutées il y a 2/3 ans.

Redis, en association avec les structures Stream, a été sélectionné pour cette tâche en raison de sa capacité à gérer de manière extrêmement rapide les opérations d’ajout uniquement (append only).

D’après Alexandre, Redis Stream pourrait traiter jusqu’à 1 million d’insertions par seconde.

Predis

Predis est une bibliothèque PHP open source qui permet de communiquer avec un serveur Redis de manière simple et efficace. Elle offre une interface pratique pour interagir avec Redis.

Présentation de LazyStream

C’est dans cette optique qu’a été présentée LazyStream, un composant pour PHP développé sur mesure pour résoudre cette problématique.

Il utilise Predis et les structures Stream de Redis pour sérialiser de petits morceaux de données au format JSON.

Ce composant s’appuie sur un Générateur, ou une « fonction génératrice » pour découper les données en morceaux (en chunks) en utilisant les « yield » .
LazyStream a été conçu pour simplifier le développement. En lui fournissant une URL et un générateur, il gère tout le processus. Tout commence dès que la fonction trigger est appelée.
De plus, il offre la possibilité de créer un MultiLazyStream, ce qui autorise l’envoi de données vers plusieurs serveurs simultanément.

Image Forum PHP 2023 Predis

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.