Vous avez sûrement vu passer la triste nouvelle : Redis n’est plus un logiciel libre ! Quoi faire face à cette situation ? Par quoi le remplacer ? La réponse se trouve du côté des forks.
Rappel des faits
Pour ceux qui ne connaissent pas encore Redis, c’est un SGBD NoSQL de type clé-valeur. Ses deux principales forces sont le stockage en RAM et son code en c (performances++).
Il est très utilisé en tant que cache applicatif, c’est d’ailleurs ce que j’utilisais jusqu’alors pour remplacer le cache sur disque de Symfony avec des gains de performances significatifs.
Depuis mars 2024 Redis a abandonné la licence BSD et il faudra donc obtenir une licence auprès de Redis à partir de la 7.4, delevopper.com a écrit un article sur le sujet et vous explique tout ça en détails (par ici).
Une bonne solution : Redict
Plusieurs forks voient le jour, et j’ai pour l’instant choisi l’un d’entre eux qui me paraît prometteur : Redict.
Redict vise en effet à fournir une alternative viable et compatible avec Redis tout en poursuivant un chemin indépendant. La communauté derrière Redict se concentre principalement sur la fiabilité. Il est distribué sous licence LGPL 3.0.
La solution est d’ores et déjà disponible en image Docker.
Migration de Redis vers Redict
Actuellement, dans votre fichier docker-compose.yml vous devriez avoir quelque chose qui ressemble à ça :
redis: &redis
image: redis:7.0.5
container_name: redis-dev
ports:
- 6379:6379
networks:
- local
Il vous suffit de le remplacer par :
redict: &redict
image: registry.redict.io/redict
container_name: redict
ports:
- 6379:6379
networks:
- local
La plupart des applications qui utilisaient Redis sont compatibles avec Redict, par exemple Redis Commander :
redis-commander:
container_name: redis-commander
image: rediscommander/redis-commander:latest
ports:
- 8090:8081
environment:
- REDIS_HOSTS=local:redict:6379
depends_on:
- redict
networks:
- local
Concernant tout particulièrement Symfony, rien ne change non plus pour lui, SncRedisBundle et PRedis pourront utiliser Redict comme s’il s’agissait de Redis. Si vous n’avez pas encore mis en place Redis Redict sur votre api / application Symfony, n’hésitez pas à me contacter. Cette opération permet de bénéficier d’une latence en lecture / écriture sur le cache de Symfony et de Doctrine infiniment meilleure, on passe de quelque millisecondes à quelques nanosecondes par opération !
Autre solution à surveiller
Un autre fork intéressant existe, il s’agit de Valkey. C’est une solution soutenue par la Linux Fundation. LeMagIT a fait un article à ce sujet.