Le blog

Nouveauté : php-redis-om disponible comme bundle Symfony

Publié le 12 février 2025

Cet article est aussi disponible en anglais.

L’été dernier, nous avons publié un article sur php-redis-om, une bibliothèque PHP permettant de mapper vos classes PHP directement dans Redis. En bénéficiant des différents formats HASH et JSON disponibles dans Redis, cette librairie permet de persister et de requêter des objets selon le même modèle qu’un ORM traditionnel de l’écosystème PHP, bien connu des devs Symfony : Doctrine et le repository pattern. Depuis décembre 2024, php-redis-om est désormais disponible et peut être utilisé comme un bundle Symfony.

php-redis-om bundle Symfony" class="wp-image-10807"/><figcaption class="wp-element-caption

Pour l’installer, il suffit toujours d’utiliser Composer :

composer require talleu/php-redis-om

Si vous êtes dans un projet Symfony, l’enregistrement dans config/bundles.php se fera automatiquement :

Talleu\RedisOm\Bundle\TalleuRedisOmBundle::class => [‘all’ => true],

Pour mettre à jour vos index, il suffit désormais de lancer la commande Symfony suivante :

bin/console redis-om:migrate

Côté injection de dépendances, vous pouvez profiter de l’autowiring de Symfony en vous contentant d’indiquer l’interface de votre ObjectManager dans le constructeur de la classe où vous souhaitez l’utiliser :

public function __construct(private RedisObjectManagerInterface $redisObjectManager) {}

public function create()
{
    $book = new Book(name: ‘Le talon de fer’);
    $this->redisObjectManager->persist($book);
    $this->redisObjectManager->flush();
}

Et voilà ! Vous pouvez maintenant persister vos objets et les récupérer via le repository fourni avec l’ObjectManager.

Parmi les autres nouveautés du bundle, vous trouverez la possibilité d’ajouter un temps d’expiration à vos objets. Très appréciée des utilisateurs de Redis, cette fonctionnalité permet désormais d’ajouter un TTL (Time To Live) à l’attribut de mapping de votre classe afin qu’il soit automatiquement supprimé de votre instance Redis à l’expiration dès 3600 secondes :

#[RedisOm\Entity(ttl: 3600)]

En somme, que ce soit pour persister vos objets ou bénéficier de fonctionnalités avancées telles que le TTL, php-redis-om offre une excellente manière de tirer parti de la puissance de Redis, tout en restant dans l’écosystème familier de Symfony. N’hésitez pas à tester cette bibliothèque, et à partager vos retours sur GitHub ! Le développeur Pentiminax a d'ailleurs récemment publié une vidéo sur sa chaîne YouTube expliquant comment intégrer Stripe avec Symfony pour un projet e-commerce, et il utilise cette bibliothèque pour mener à bien son développement !

Le blog

Pour aller plus loin