Redis, pour le cache mais pas que !

Durée: 53m22s

Date de sortie: 14/07/2023

Dans cet épisode, nous allons évoquer le système de stockage de données Redis. Alex, s’intéresse et travaille avec Redis depuis quelques mois. Il a découvert tout un tas de fonctionnalités que beaucoup d’entre nous ignorent. En effet, pour une majorité, Redis est utilisé pour mettre en cache des données brut. Un épisode de podcast qui devrait vous donner envie d’en savoir plus sur Redis ! Retrouvez toutes les notes et les liens de l'épisode sur cette page : https://double-slash.dev/podcasts/redisdead/

Bienvenue sur Double Slash, le podcast dédié aux outils et aux techniques pour le développement
web.
Bonjour à tous, bienvenue sur ce nouvel épisode de Double Slash, épisode en juillet, c'est
l'été, vous avez probablement chaud comme toi Alex.
Salut Alex ! Salut Patrick, salut tout le monde !
Donc le sujet du jour, alors en ce moment, Alex il est très très basse de données et
il est un peu fan de Redis, d'ailleurs je demande s'il va pas se faire tatouer Redis
sur le bras bientôt.
Ouais, c'est un peu ça ouais.
Donc du coup il est tellement fan de Redis qu'on a décidé de faire un épisode sur Redis
et donc le nom de l'épisode aujourd'hui c'est Redis Cash mais pas que parce que souvent
Redis c'est utilisé pour du cash, c'est principalement utilisé pour ça d'ailleurs.
Mais moi j'avais un autre titre, alors c'est une petite blague mais c'est Redis Dead,
alors pour ceux qui connaissent le...
Alors tout le monde n'aura pas la rêve, par contre si vous avez la rêve mettez un petit
pouce, un petit like, ça nous fera marrer.
En tout cas, Redis Dead c'est pas mal, j'aime beaucoup.
Mais ce qui est sûr c'est que en fait Redis c'est une base de données qui est souvent
utilisé pour du cash mais on peut faire plein d'autres choses avec et c'est ce qu'on
va essayer de voir sur cet épisode de voir en fait tout le potentiel que cette base de
données nous offre en fait et ceux de manière totalement native quoi.
On va dire nativement on a des fonctionnalités de fou et je pense qu'on l'utilise pas assez
à mon bout je pense.
Ouais, on va commencer par expliquer est-ce que c'est Redis.
Alors moi j'ai demandé à Notion AI de me faire un historique de...
Alors il m'a dit Redis a été créé en 2009 par Salvatore San Filippo.
Il s'agit d'une base de données no-SQL en mémoire qui permet de stocker des données
de manière persistante.
Du coup j'ai été vérifié quand même sur le net parce que des fois ça donne des conneries
mais c'est bon en fait, c'est la bonne.
Ouais, alors après sur la persistance ce qui est sûr c'est que oui c'est principalement
en fait enregistré dans la mémoire donc si c'est dans la mémoire en fait ça veut dire
aussi que c'est volatile.
Par contre il existe en fait des mécanismes pour justement rendre cette donnée persistante
et on pourra en parler sur les deux mécanismes qu'on peut avoir.
Donc oui ça c'est vrai.
Par contre il faut quand même dire aussi que c'est un usage mais que sa grosse particularité
quand même c'est qu'elle est ultra rapide et elle est orientée vraiment performance.
Ouais du coup comment elle fonctionne en fait ? Redis ça fonctionne comme...
Comment et pourquoi oui comme tu dis ça a été créé pour la vitesse mais comment
ça fonctionne de base ?
Bah en fait c'est déjà c'est écrit en C et donc c'est vraiment bas bas niveau donc
déjà rien que ça on va avoir une grosse performance et le fait que ça soit accessible
dans la mémoire vive on sait en fait que tout ce qui va être enregistré dans la mémoire
vive va être beaucoup plus rapide on va dire accessible rapidement que si on l'écrit
sur un disque même si aujourd'hui on a des disques SSD rapides tout ça mais le fait
que ça soit stocké dans la mémoire en fait par définition c'est beaucoup plus performant.
Yes du coup comme tu dis mémoire ça veut dire que si t'éteins ton serveur ou ton ordi
la mémoire disparaît.
Exactement et donc c'est pour ça qu'on dit oui mais la donnée elle est pas persistante
parce que si ta machine pour X-Raison elle bug comme tu dis ça marche pas.
Néanmoins il existe en fait des une solution qui nous permet en fait d'enregistrer en
fait c'est comme si on faisait une photo de l'ADB à un instant T et on vient la mettre
sur un disque et là en fait ça vient rendre la donnée persistante donc il y a des règles
en fait l'abrévation c'est RDF c'est vraiment comme une database et on fait en fait des
snapshots donc c'est vraiment pour ceux qui viennent du SQL on fait un dump et puis et voilà donc ça c'est
une possibilité pour la rendre persistante après à nous de définir en fait à quelle
périodicité on va faire ces dumps est ce que c'est à la seconde toutes les 10 secondes
s'il y a des transactions qui ont été faites voilà on a quand même un niveau de précision
où on peut en fait ajuster toutes ces toutes ces infos pour rendre la la persistante la
persistance de l'ADB et on a un autre mode aussi qui nous garantit en fait de garder
une un historique et en fait de la persistante de données c'est le mode qui s'appelle AOF et
en fait qui est Append Only Files où là l'idée en fait c'est un petit peu plus comme un journal
en fait un log à chaque écriture en fait on va écrire on va écrire un journal on va écrire
dans le journal et si on doit reconstruire la donnée en fait on va relire le journal et
reconstruire la donnée au fer à mesure c'est le même système qui est utilisé en SQL sur
les yales les choses comme ça donc en fait grâce à ce mécanisme là on peut rendre la
donnée persistante d'accord donc il sauve au fer à mesure dans un fichier mais il utilise quand
même que la mémoire mais au fer à mesure il sauve et c'est ce snapshot de database c'est
gourmand en ressources à chaque fois quand tu dis on peut faire toutes les secondes toutes les
10 secondes tout ça c'est est ce que c'est long à faire ou c'est instant ? Non c'est
relativement rapide après plus ton dataset va être gros plus ça va prendre de temps plus ça
va prendre de place donc après ça va être à toi de trouver la meilleure on va dire règle sur
ta database tu vois et après il faut est ce que tu as besoin d'avoir un historique dans ta mémoire
vive de des dix dernières années bah peut-être que c'est pas pertinent donc en fait ça va être
à toi de définir qu'est ce que tu vas mettre dans cette DB qu'est ce que tu vas en faire et quelle
périodicité tu as besoin de cette sauvegarde pour justement en fait inscrire un chemin un peu
pertinent quoi ouais mais du coup du coup c'est peut-être un réeliste est peut-être plus orienté
sur la donnée qui est pas comme dire primordial entre guillemets ou si tu la perd c'est pas grave
non plus voilà tu vois exactement après tu peux faire un choix de l'utiliser comme une base de
données secondaires et de l'utiliser en fait uniquement pour des questions de performance par
exemple t'as un ERP dans un entrepôt qui a leur propre serveur tu vas exposer
des données sur internet par exemple pour le site de e-commerce bah l'idée c'est de faire une
sorte de réplica qui va être ultra rapide et ultra performant donc là même si la donnée n'est
pas totalement à jour on va dire à la seconde c'est pas très très grave et donc en fait oui tu peux
créer des on va on va dire une version plus secondaire des données ouais clairement ok et tu
peux aussi t'en servir comme base de données primaire par contre là il faut faire attention
justement à tous ces mécanismes pour ne pas perdre la donnée clairement ouais c'est clair ok donc
t'avais dit dès le début c'est no SQL donc du coup c'est quoi le stockage des valeurs ça
stockant c'est moi j'en avais fait du rédice pas mal à l'époque je me souviens que c'est des plutôt
des strings alors ouais alors en fait le no esqu... ce qu'il faut comprendre sur le no SQL dans
redis c'est que c'est du clé valeurs donc on a l'habitude d'utiliser souvent un objet où et en
fait on va rentrer dans la clé ça va être la manière dont on va requêter cette donnée et la
valeur ça va être la valeur un tracéque de la donnée pour le stocker ouais exactement qu'on veut
donc dans cette clé ce qu'il faut savoir c'est que c'est du no SQL donc il n'y a pas de schéma on
n'est pas limité par la structure de de la DB ce n'est pas imposé par contre en fait si on a
justement on n'a pas de schéma particulier c'est pas une raison pour faire n'importe quoi et bien
au contraire je dirais même il faudrait encore être encore plus strict sur comment on structure la
donnée comment on met en place des schémas pour s'y retrouver tout simplement parce que sinon
totalement archaïque et c'est un bordel sans son nom donc en fait il souvent en fait on va utiliser
des conventions donc sur cette clé justement qui va être une string on va utiliser des conventions
pour faciliter le boulot et rendre nous ouais nous rendre la vie plus facile donc souvent si on va
stocker une information d'un user et ben on va marquer user deux points et là en fait on va
mettre son id ou en fait l'équivalent d'un d'un id en tout cas c'est un identifiant unique qui va
nous permettre de retrouver cet objet devant dans cette immense base de données et si on
fait pas ça clairement ça va être quasiment impossible de trouver en fait le notre notre valeur
donc ça va te gérer les identifiants ouais entre guillemets absolument sinon tu mets ta valeur dans un
trou et tu leur trouves plus jamais quoi sinon c'est un trou noir en fait c'est un peu ça exactement
et surtout en fait si tu dis par exemple user si dans dans ton programme ou dans ton application
à un moment donné tu viens réécrire user il va dire ok bah moi je les réécris par contre
t'as peut-être réécrit t'as peut-être effacé de la donnée alors que tu ne voulais pas donc est-ce
que c'est le même user est-ce que c'est le même contexte donc en fait plus on est précis dans ces
conventions plus ça va être ça va être facile et on peut aller très très loin il y a on peut mettre
par exemple même un poste de point id de point review de point id donc voilà on peut vraiment
construire une clé assez longue qui qui va nous donner en fait un niveau de précision très très
précis et l'avantage c'est quand on va faire des requêtes et quand on va demander la donnée en
fait on sera soit ultra précis parce que on n'a que la clé valeur que l'on souhaite ou on dit bah moi
donne-moi tous les user de point quelque chose et là on va mettre étoiles et dans ce cas là on va
les récupérer en fait toutes les valeurs qui commencent par user de point alors après attention
aussi aux requêtes parce que plus on va avoir d'identifiants et plus on en fait c'est l'équivalent
de sélect quelque chose sur la table sur la table aussi quand on vient en SQL quoi ça on en parlera
après des query par contre pour les clés c'est vraiment redis ne gère pas du tout les clés en
fait c'est vraiment toi qui génère ta clé pour stocker oui redis ne gère pas ce côté là
absolument il va pas gérer ormi ormi en fait sur un data type particulier un type qu'on appelle
stream où on va on va en parler un petit peu plus tard parce que c'est il y a des il y a vraiment
des cas d'usage qui sont hyper intéressants avec ça ou là pour le coup la valeur par défaut
va être le timestamp c'est voilà mais là pour le coup c'est c'est redis vu que tu utilises
un type stream en fait il va générer ton ton identifiant et tu peux le gérer toi même si tu
veux mais par défaut il va te mettre un timestamp par contre si tu fais un get set classique voilà
je la valeur user est égal à alex et ben là la clé c'est user donc si moi ça peut être
intéressant ça peut avoir un use case de pas mettre d'identifiant par contre si j'ai besoin d'avoir
plusieurs users alors là il va falloir que je mette là une valeur id quoi ok donc alors tu as
déjà commencé au niveau des types des valeurs donc tu as dit stream tu as parlé de hash il me
semble oui alors les haches c'est on va dire c'est vraiment la partie la plus commune où voilà
c'est quand on vient du javascript on utilise un objet bon bah dans cet objet il y a plein de clé il
y a plein de valeurs là pour le coup c'est exactement pareil ça va être un hash en rubis pareil c'est
un h en php je ne sais pas comment ça s'appelle un hash ok donc là en fait on va vraiment
écrire autant de clé valeurs sauf que dans notre valeur en fait ça va être un objet qui lui-même
aura des champs et des valeurs voilà et la terminologie en fait c'est field c'est vraiment
le champ et la valeur la clé c'est la clé primaire fin c'est clé valeurs et la valeur va être un
objet qui lui-même à l'intérieur va avoir plusieurs champs et plusieurs valeurs par contre
attention c'est important de ne pas on peut pas mettre des sous champs dans le type primaire hash
c'est à dire qu'il n'y a qu'un seul niveau de champ on peut pas avoir des champs nestés
complétement un briquet ça c'est pas possible c'est pour ça qu'ils ont sorti un autre type de
données qui s'appelle des informats json et là pour le coup on peut un briquet en fait un objet
dans un objet dans un objet dans un objet dans un objet ok donc tu peux stocker du json directement
exactement par contre ça en fait c'est pas natif dans redis c'est c'est un module que tu viens
installer en plus qui fait partie d'un groupe de modules qui s'appelle redis stack et en fait
qui viennent en fait augmenter faut voir ça un peu comme une extension un module à la base de données
qui viennent en fait augmenter le potentiel de la base de données donc natifement en fait le
json n'est pas pris en compte mais avec un module tu peux l'utiliser et tu peux avoir des champs
nestés à l'intérieur de tes valeurs d'accord intéressant justement je te disais je m'en ai
moi j'étais resté sur les strings et je coud du string des filles json en fait quand tu veux stocker
à l'époque et exactement c'est pris en charge exactement attention souvent en fait quand on
utilise c'est vrai que tu vois c'est ce qu'on disait tout à l'heure sur du redis ou en fait en
souvent on l'utilise pour du cache donc on prend la requête et en fait on fait un appel à la
au serveur on a une super requête avec du SQL avec des join et dans tous les sens
et bah au lieu de la recalculer à chaque fois on vient la stocker dans un redis et le gros
avantage qu'on va pouvoir faire c'est qu'on va pouvoir une particularité aussi dans redis c'est
qu'on va pouvoir lui donner une durée de vie et on s'appelle le TTL le time to live et en fait on
va lui dire au bout de 30 secondes une minute deux jours trois jours quatre jours c'est à nous là c'est
qu'il y a des valeurs va tout simplement mourir donc en fait c'est c'est vraiment je viens en
registrer une donnée au bout de son TTL ça dure et de vie la ligne disparaît donc c'est beaucoup
utilisé pour faire du cache pour justement en fait garder garder en mémoire la donnée
ah bah ouais c'est parce que ouais tu as des fonctions justement le get set TTL c'est exactement
les fonctions que tu utilises pour du cache quoi donc c'était vraiment est ce qu'à la base
t'es pas vraiment pensé pour le cache peut-être au début alors j'étais pas dans les j'étais pas
chez eux au départ avec qui je connais pas en fait toute la jeunesse donc je sais pas qu'est ce qu'il
les a motivé au départ mais en tout cas c'est aujourd'hui c'est c'est connu pour le cache c'est
sûr et en plus ce qui est super intéressant c'est que c'est pas si compliqué à mettre en place
et en fait pour un simple développeur par exemple quelqu'un qui fait du PHP sur symphonie il va vouloir
mettre en cache ses requêtes en fait il va implémenter une librairie qui derrière utilise
redis mais lui en fait il n'a jamais touché redis parce qu'il va jouer avec sa librairie et en
fait c'est la librairie qui va interférer avec redis donc potentiellement certains développeurs
utilisent redis sans même le savoir en fait c'est possible c'est clair le jour de jour sur le
jason parce que ça m'intéresse ouais bien sûr tu peux faire des des requêtes directement sur le
jason avec des valeurs qui sont dans ton jason exactement en fait il est tu tu tu vas pouvoir
en fait faire des recherches sur des champs particuliers ça veut dire ok donne moi en fait tel
clé et donne moi tel champ et donc ah oui tu peux récupérer certains champs et pas les autres
ok exactement en fait si tu demande si tu fais un get on va dire classique avec ou tu n'oublies pas
ce que la clé tu vas récupérer l'intégralité du jason par contre si tu décides à moi tu me
donnes que ce champ là et ce champ là bah tu ne vas récupérer que les champs que tu as demandé
d'accord mais là on est un peu sur le territoire de mangot db et bien sûr et bien sûr on est
complètement d'accord et ce qui est ce qui est aussi pas mal c'est que avec dans le module json tu
vas pouvoir en fait utiliser alors il ya une un truc s'appelle le json passe tu sais où en fait tu
vas pouvoir mettre des points et en fait tu vas plonger dans les dans tous tes objets donc toutes
les personnes qu'on fait du nouesquiel connaissent ça et c'est quand même assez sympa parce que au
lieu en fait d'aller parcer au fur et à mesure bah tu vas uniquement donner ton ton bah ton json
passe donc c'est clé primaire point field point sous-field point sous-field et hop tu vas récupérer
ta valeur donc le fait en fait d'avoir ton json passe comme ça c'est beaucoup plus facile à lire
et ouais tu fin tu te prends pas la tête quoi c'est beaucoup plus intéressant et j'ai vu aussi
géospatial s'agère les données géospatiales et exactement en fait ça enregistre les données
donc là c'est un autre type de données qui sont qui sont vraiment utilisés pour le bah pour faire
du du géocode donc avec les données cordonner les coordonnées gps en fait et l'avantage c'est que
tu vas pouvoir faire des calculs c'est à dire ok combien ou en fait donne moi tous les restaurants
qui sont à telle distance de ce point là par exemple donc en fait on va pouvoir aussi calculer
la distance entre deux points mais de manière native tu lui donne deux points lui il va te calculer
la distance il va tu vas pouvoir en fait tracer un cercle et tu vas voir si les si il y a d'autres
points dans ce cercle là ou par contre donc en fait et ça de manière native native ouais
alors comme json c'est vraiment natif ouais ça c'est natif et pour le coup tu peux là on vient
de marcher sur les plate-bandes en SQL en pause gray tu sais qu'il y a une extension que ça
appelle poste gis qui justement en fait vient à implémenter toutes ces toutes ces manipulations de
coordonnées gps de distance de zone et tout ça et ça en fait c'est implémenté de manière
native chez chéri ça c'est pas mal parce que tu vois justement tu peux stocker par exemple
d'une liste de magasins avec les coordonnées gps tout ça tu peux très bien stocker juste le nom les
coordonnées tout ça dedans ce qui va être hyper rapide pour afficher sur un point sur une carte et
après derrière si la personne ne veut plus d'infos tu vas chercher sur une autre base de données via
le laïdit tu vois donc tu peux vraiment jouer là dessus absolument t'as une recherche qui est
hyper rapide au niveau de la l'organisation c'est le maître mot en fait c'est la rapide c'est
vraiment la performance et tout est écrit là dessus et tout a été pensé pour ça et ce qui
est intéressant c'est que dans la documentation qui est hyper complète pour le coup qui est à chaque
opération en fait ils vont nous mettre en fait un indice de performance et l'indice oh voilà on va
faire super simple plus si c'est un ça va être hyper rapide par contre si c'est n ça veut dire
bah si tu appelles 10 bah ça va prendre beaucoup plus de temps que 1 et 10 000 en fait après ça
va être vraiment par rapport au nombre d'objets que tu vas pouvoir appeler donc il y a des requêtes
qui vont être hyper lentes par nature donc c'est après à nous de structurer la donnée et de faire
les mises à jour de telle qu'elle est de telle manière que ça soit en fait hyper rapide à la
lecture et je pense que c'est aussi un pattern qui est intéressant à mettre en place et utiliser
redis pour ça c'est qu'en fait on se rend compte que dans les bases de données souvent on lit
10 parfois 100 000 fois plus la donnée que on l'écrit souvent on l'écrit qu'une seule fois et on
va la lire plein plein plein de fois et donc si on a des patterns vous en fait on recalcule à la
volée à chaque fois en fait bah c'est pas du tout intéressant et un petit pattern qui est intéressant
à mettre en avec crédit c'est par exemple c'est sur des avis clients chaque avis client on va avoir
une note et après le produit il va avoir en fait une moyenne des notes et en fait ce qu'on va faire
c'est au lieu de stocker chaque avis avec sa note et au moment où on appelle l'ensemble des avis
on calcul à la volée parce que là ça veut dire que à chaque fois qu'on va afficher la donnée il va
falloir la calculer là on fait l'inverse c'est à dire on vient écrire volontairement le nombre de
d'avis qui a qui qui a été mis la somme en fait de tous les avis et en fait on vient calculer à
la volée mais avec deux chiffres c'est à dire on stock le nombre d'avis qu'il y a à chaque misage
au on fait un incrément donc plus un plus un plus un et si la note de 1 à 5 on vient mettre plus 4
plus 3 plus machin donc on vient incrémenter la somme de toutes les de toutes les reviews et en
fait au lieu de requetter les 300 avis clients et de faire une calcul à la volée on ne requête
que la somme globale et le nombre d'esquiper qu'on a juste une simple division à faire et donc ok
ça va prendre plus de temps à l'écriture par contre à la lecture on va exploser tout le temps
d'affichage parce que on n'a pas besoin de faire un on va dire point l'ense ou point machin avec
le calcul tout non là on l'a directement donc en fait ça nous force à changer un petit peu
notre manière de fonctionner ouais un petit ou que chacun enregistrement tu mets un jour ton
release et puis ouais mais c'est pas mal c'est pas mal alors du coup on a déjà parlé des queries
on a déjà expliqué enfin tu as déjà expliqué jason qu'on pouvait requetter tout ça des champs
etc qu'est ce qu'on peut dire d'autres t'as parlé des clés au début on peut faire des users de
points après en fait ça c'est vraiment sur la structure de la donnée pour aller en fait
la la requetter il nous faut avoir une des conventions de nommage qui sont ultra ultra fortes
quoi et ça va aussi nous aider si on peut créer des index et on va pouvoir en fait faire du search
à l'intérieur de toutes ces clés là et donc en fait pareil le search et n'est pas natif en fait
dans redis par contre on peut installer un module pareil de toujours de redis stack qui va nous offrir
en fait la possibilité en fait de faire des queries des agrégations de données donc on va créer des
index pour justement fait requetter ces données un peu en long en large en travers donc ça va être
bien plus intéressant alors attend c'est quoi un index en fait après c'est exactement
une sorte de glossaire de tes clés une table des clés exactement en fait c'est par exemple tout tu
veux tu vas créer un index user et en fait dedans bah tu en utilisant cette index tu
sera beaucoup plus rapide en fait pour pour aller requetter toutes les toutes les clés qui
commencent par user ok ok ça ok search index qu'est ce qu'on a d'autre est ce que tu peux faire des
relations alors oui tu vas faire en fait rien qui ont des adresses rien ne t'empêche rien ne t'empêche
en fait de faire du relationnel avec tu viens mettre tes clés étrangères à chaque fois oui par
contre généralement avec du no SQL quand tu commences à faire du relationnel c'est que c'est pas une
bonne idée exactement et exactement exactement après il faut il faut se poser la question de
est ce que c'est intéressant ou pas de de mettre du relationnel dans ce contexte là après j'aime
bien cette idée aussi de de polymorphisme où en fait on va avoir une une base commune par exemple
pour un site de e-commerce on sait que chaque produit de notre e-commerce va avoir un titre une
image un SKU un identifiant unique et une photo par exemple ou une description par contre après
potentiellement un objet de type électronique va pas avoir les mêmes informations qu'un objet de
type chaussures donc en fait pour le type chaussures on pourrait avoir des champs spécifiques et pour le
champ électronique des champs spécifiques donc on ferait ça si on était dans le monde SQL on ferait
une relation ou des choses comme ça là en fait on peut faire du polymorphisme on va dire sur
l'objet pur on lui met un type et le type électronique à plus à des champs qui lui sont
propres voilà le temps de chargement les usb et tout ça et les chaussures ont des champs qui lui
sont spécifiques donc voilà ça nous force à changer un petit peu ce paradigme là mais là
pour le coup c'est pas spécialement du propre à redis c'est plus propre vraiment à nos SQL
exactement exactement et en fait ce qui est intéressant il y a des types en fait qui sont
super intéressant je pense par exemple au set c'est des choses qu'on va utiliser en fait dans
notre front souvent on dit bah voilà moi je vais créer un set parce que je veux surtout pas qu'il
y ait deux objets ou deux valeurs qui soient identiques dans mon set donc voilà je vais l'utiliser
sauf que au moment où je vais le pousser la data sur ma base de données classique ma SQL ou
post-gray en fait je vais être obligé de tordre un petit peu ce des cette fonctionnalité et au
moment où je vais requetter je vais faire des joints et tout ça et derrière je vais le récupérer
en front et je vais le remettre dans mon set donc en fait là le c'est un petit peu bête en
fait de perdre cette fonctionnalité alors que dans redis justement on a des sets on a la possibilité
d'enregistrer des sets de manière automatique et native ce qui fait qu'il n'y a pas y a pas
besoin d'avoir un ORM il n'y a pas besoin d'avoir des joints et tout ça on va directement appliquer
on va en fait enregistrer la donnée telle quelle dans un set et donc ça en fait ça va être assez
pratique l'exemple d'un set classique c'est les followers et les voilà sur un twitter j'ai des
followers et moi je peux follow du monde ben je vais pas enregistrer plusieurs fois si je si je
m'abonne plusieurs fois je vais pas enregistrer plusieurs fois la donnée j'ai besoin qu'elle soit
ok j'ai créé une connexion entre un follower donc ça c'est ça c'est intéressant parce que on a pas
besoin de tordre et changer en fait la donnée et il y a un autre truc qui est sympa sur les sets
c'est qu'on peut aussi avoir des sets qui sont ordonnés et qui sont avec un ordre particulier donc
ça ça peut être intéressant par exemple pour faire des classements où ben le user a marqué 350
points le user b a utilisé un ami 200 le user c 80 et donc le fait d'avoir des 7 des sets qui
sont en fait structurés et triés et ben ça peut être hyper intéressant je pense pour des classements
de jeux vidéo ou des compétitions dans le sport ou des classements on va pouvoir en fait en fait
c'est classé par design enfin en fait par définition c'est déjà organisé donc on va dire ok
bah tu me donnes ce 7 là et tu me donnes les 5 premiers et en fait on n'a pas besoin de dire
order by machin parce qu'en fait ils sont déjà hors d'or by par définition nativement donc ça
ça peut être ça peut être tu dois lui indiquer l'ordre comment il le fait ou par exemple
les scores donc tu détermines tout seul tu sais toi qui détermine quand même non parce que en
fait c'est toi en fait par design où tu vas lui tu vas lui dire bah tu vas injecter dans le 7 on va
dire classement que t'appelles classement tu vas lui injecter alex qui a pour score ou pour valeur
ou pour je sais pas quoi 80 et donc lui nativement il va il va scorer par rapport à la valeur que
tu lui as donné 80 là pour là pour cet exemple c'est 80 et donc évidemment que si tu lui donnes
un coup tu lui donne 80 et après tu lui donne un timestamp bon bah voilà ça va pas faire par
compte tu peux faire des des des classements sur vraiment les valeurs que tu veux donc c'est à toi
d'être vraiment très strict sur quelle valeur tu vas lui injecter pour que il y ait une pertinence
et une cohérence dans ton data set c'est réaliste c'est relativement souple comme tu dis après
ça demande quand même beaucoup de rigueur et puis de convention aussi il faut se mettre d'accord
c'est plusieurs sinon ça devient vite n'importe quoi complètement complètement et en fait c'est
là où parfois je pense on peut facilement se tromper sur ouais y a y a pas de schéma c'est cool
on fait à la rache et en fait non tu vois il y a une grande souplesse ok mais justement il a besoin
d'avoir une grosse rigueur pour faire trouver sinon c'est un bordel sans nom un grand pouvoir
grande responsabilité c'est ton parquet qui disait ça ok super bon on a vu ça et qu'on va
parler vite fait de sécurité de droit aussi comment ça se passe tu peux gérer des droits
d'écriture de l'accès tout ça est-ce que c'est sécurisé en fait redis tout simplement
ouais alors on va venir sur le serveur et se servir alors non pas du tout en fait tu vas avoir
différents de la même manière en fait que tu as un protocole ma SQL 2. slash-lash avec une grande
string qui est en fait une URL de ta connexion à ta database tu vas avoir évidemment un utilisateur
on va dire route ou admin admin ou post-grep post-grep ou juste pas quoi et qui lui en fait à tous les
pouvoirs après libre à toi en fait de créer différents users qui ont différents droits donc
qui en fait il y a un système de d'autority je sais je sais plus c'est quoi la chronyme de acl
mais en tout cas ouais on peut gérer les droits de qui a le droit de voir quoi et on peut aussi
avoir un niveau assez précis sur les commandes en fait bah non toi t'as pas le droit d'exécuter
ces commandes là parce que tu n'as pas les droits donc évidemment la baisse enfin la meilleure
pratique c'est de créer des clients si on a plusieurs applis ben on va créer plusieurs clients si on
sait si par exemple on va sur notre appli de e-commerce requêter les informations pour afficher de la
donnée on va créer un client qui ne peut lire qui ne peut lire que voilà juste un client
read en lit quoi ce qui fait que on a voilà on n'expose aucune aucune donnée c'est pas c'est pas
dangereux quoi donc en fait on va avoir le même niveau de de de sécurité que sur les autres
bases de données faut-il encore se donner l'effort de structurer de bien faire de bien faire des
users c'est clair ok très bien on a vu un peu près bah là on a fait le tour un peu des bases
de redis comment ça marche des requêtes tout ça le type tout alors maintenant ben c'est super moi
ça me donne super envie d'utiliser redis alors comment je peux l'utiliser redis est-ce qu'il faut
que je l'installe sur mon serveur je prenne un serveur chez ovh ou info maniac et j'installe redis
comment ça se passe c'est facile à trouver du redis déjà alors oui c'est tu vas pouvoir l'utiliser
en fait soit de manière nativement tu vas pouvoir l'installer de manière on va dire direct sur
sur ta machine sur n'importe quel os donc que tu sois sur windows windows mac ou linux après tu peux
aussi le mettre sur un docker donc tu vas récupérer ton ton image de car et là tu vas pouvoir l'installer
immédiatement tu vas pouvoir installer une petite commande dans ta chi et l'ail pour justement jouer
avec voir comment ça marche et tu vas pouvoir aussi utiliser redis stack avec donc c'est tous les
modules on va dire qu'on a qu'on a présenté tout à l'heure et il y a aussi une autre possibilité
c'est de récupérer une image avec donc redis redis stack avec tous les modules et red insight et en
interface graphique en fait qui est qui est qui a été mis en place enfin qui a été développé par
redis lab entreprise enfin ouais redis lab qui est en fait la société derrière derrière redis et ça
va être vraiment un client ou avec une interface graphique où il y a tout dedans donc on va on va
pouvoir voir ses clés valeurs on va pouvoir faire des tri on a notre notre ci li à l'intérieur on a
aussi la doc donc on a une sorte d'auto complétion aussi là dedans on va pouvoir modifier le time
to live on va pouvoir inspecter les données donc c'est assez puissant et on va pouvoir aussi
monitorer son son instance de redis donc en fait on va voir combien de rames combien de mémoire on
utilise le temps de réponse moyen d'une requête ou quand on va exécuter une requête on va pouvoir
inspecter cette requête là en mode ok bah là en fait j'ai ça me prend beaucoup beaucoup de temps
et donc c'est un outil qui est qui est assez assez agréable à utiliser et qui nous ouvre en fait pas
mal de possibilités ok ouais c'est une sorte de redis admine quoi c'est un peu comme ouais
exactement et exactement comme on a du tout le mail et exactement exactement c'est une interface
graphique qui pour le coup est vraiment vraiment poussé et vraiment simple à utiliser et qui nous
amène beaucoup d'informations alors il ya un truc parce que tu parles de société derrière redis
mais on n'a pas précisé dès le début mais c'est open source redis on est d'accord alors c'est
open source c'est avec une licence qui est qui est en b sd donc c'est assez permissif sur l'utilisation
t'es pas obligé de nommer tout donc ça c'est plutôt bien sur la partie redis par contre
sur la partie redis stack donc tous les modules en plus là c'est un petit peu c'est un peu plus
un peu plus limité par exemple tu peux les installer sur ta machine si tu l'auto gères par
contre tu peux pas aller voir héros coups ou scalingo ou des des plateformes à service eux ils vont te
donner accès à redis mais ils ont pas le droit d'un déberger ces modules là ok ah oui c'est d'accord
c'est pour un message perso en quelque sorte après tu n'as pas le droit de t'as pas le droit d'utiliser
de les utiliser là tu vois d'accord ok donc si on veut déjà en local donc l'idéal c'est docker
avec or stack si vous avez écouté l'épisode news le dernier on parle d'or stack donc pour les
mac maintenant fait tourner d'occurre avec ça c'est top on a testé tous les deux c'est génial voilà
sur le serveur bah si on soit vous êtes un barbu vous mettez révis sur votre serveur mais moi je suis
faire du cloud qu'est ce qu'on a comme possibilité est ce que c'est est ce que je peux trouver facilement
un service cloud pour absolument en fait avoir une base de le fait ouais absolument en fait on va en
fait tu tu vas pouvoir en fait mettre redis directement sur sur ta machine en version auto hébergé et
surtout auto administré donc tu vas avoir tous les gros providers qui vont te donner accès
derrière leur marque à eux voilà azure ça va être azure redis machin chez google chez a wbs
voilà ça c'est ça c'est possible après tu peux aller directement chez redis lab ou eux aussi vont
te donner accès à toutes les toutes les tous les les opens les modules qu'on parlait donc les
stacks tout ça donc directement chez redis lab après ce que je vois surtout en fait c'est eux ils vont
gérer la mise en production et la scalabilité ce qui va être compliqué c'est que si tu as
provisionné ta machine à un jeu un giga par exemple ok pour x raison ça explose bah là ça va être
compliqué si c'est toi qui qui l'administre ça va être compliqué après si tu passes par des solutions
hébergées eux ils vont gérer si t'as coché sous réserve d'avoir coché les bonnes cases on est
bien d'accord tu vas gérer ils vont plus facilement gérer la scalabilité et surtout en fait ils vont
aussi gérer l'horizontale toute la scalabilité horizontale par exemple si tu veux faire du géo
réplicage c'est à dire ok moi j'ai une base en en europe mais j'ai une base aussi aux états unis en
asie bah comment tu vas répliquer toutes ces données là comment tu vas faire aussi du j'écris sur
une base mais je lis depuis notre pour avoir une sorte de réplica en fait tout ce système de
de clustering de de centinelles on va pas rentrer là dedans tout mais ce qui est sûr c'est que c'est
assez compliqué à administrer c'est un c'est vraiment un boulot à part entière et tout ce
système là pareil pour la persistance tous tous ces systèmes là en fait peuvent être activés
avec trois clics si on passe par des hébergeurs on va dire qui gère ça et qui vont l'administrer
pour nous quoi à partir du moment où tu as mis la carte bleue oui patrick il faut bien que les
mecs y vivent quand même mais justement alors moi j'ai un réaliste c'est cool je vous reste
au quai un petit truc sur les listes tu vois pour gagner un petit peu en vitesse sur mon
application ouais j'ai pas forcément forcément envie de payer parce que tu vois je ne parle pas
grand chose donc voilà payer un truc à je sais pas 20 30 dollars ça fait un peu cher pour ce que
je vais stocker bien sûr ce qui est moyen de trouver quelque chose de gratuit absolument alors
souvent en fait chez tous ces opérateurs on va avoir un premier niveau de un fritier en fait qui
va être déjà intéressant qui nous permet déjà de jouer avec et souvent va avoir 30 ou 40 mots
on se dit ouais mais c'est que dalle oui sauf qu'en fait on on stock vraiment des bits quoi donc
c'est que dalle donc vraiment c'est vraiment c'est dérisoire donc ce qui nous permet en fait déjà
d'implementer pas mal de choses et de pouvoir tester de tester l'outil donc je pense à redis lab
qui offre quelque chose pareil sur les gros mais major ils vont avoir un fritier sinon
qu'il y a une autre solution et on en avait parlé vite fait sur sur l'épisode sur les db c'est
upstash en fait qui est une un service en fait de de redis on va dire serverless donc c'est ultra
facile à mettre en place ils ont leurs propres clients en 4 lignes de code on a notre notre
instance de redis qui est en fait on a branché notre application sur notre instance de redis et
on va pouvoir utiliser une grosse partie des des commandes de redis quoi donc ça c'est ça nous
permet de pouvoir tester redis et ils sont hyper généreux sur la partie frie et même sur la partie
payante je crois que ça reste sur des prix très très très très abordables pour info quand même
upstash c'est le service qui est derrière versel kv versel a implémenté en fait un service de
clé valeur directement en via leur leur propre leur propre libérer donc ça va super vite mais
ils ont pas recodé la roue ils se sont appuyé sur ce service là donc soit vous passez par versel
kv c'est facile c'est hyper rapide à implémenter soit vous allez directement chez upstash et vous
payez moins cher après vous faites pas de poignée je dis ça je dis rien mais réfléchissez quand
même un tout cas si versel fait confiance upstash je pense qu'on peut y aller et bien sûr bien
sûr bien sûr donc ça nous permet en fait de je pense à implémenter faire du cash de
réponse tout de suite facile facilement si vous voulez mettre en place pareil des job queue
avec des listes de tâches en fait qui sont à faire bah voilà on peut implémenter ce genre de
de de solutions assez facilement avec avec avec redis et avec upstash ça va relativement vite
ok bah de toute façon on devait en un à un je parlais tous les deux mais on doit implémenter ça
sur le site du podcast oui pour stock pour stocker les durées des épisodes puisque en fait on fait
un calcul tout ça pour voilà c'est du coup on le stock actuellement dans un fichier et qui
m'avait dit upstash pour pour passer sur redis ce sera mieux tout ça donc ben ouais et comme ça on
le calcul une seule fois on enregistre et puis et quand on appelle on le récupère et par contre
sur upstash on est limité je crois à 10 000 commandes par jour quelque chose comme ça bon je pense
qu'on est large c'est en plus surtout que le site c'est du statique donc une fois qu'il est
généré non c'est bon quoi et voilà donc ok super donc voilà différents différents offre on a
même du gratuit pour commencer donc pas mal de trucs mais comment on fait pour se former du coup
ce que là tu es expliqué plein de choses mais même formé voilà comment je fais mais clairement
tu peux pas redis en fait redis là ben a sorti un truc s'appelle redis universit et moi je te
cache pas que c'est là où j'ai poncé tout c'est il prend il prend bien expliqué il part vraiment
depuis la base donc ouais parfois tu es obligé d'accélérer un peu parce que tu reviens vraiment
sur des gros gros fondamentaux mais au moins t'as t'as les infos donc ça c'est plutôt plutôt bien
et en fait au-delà donc il y a vraiment un premier cours qui est vraiment le le 101 quoi
vraiment le le départ pour bien comprendre en fait les types de data la structure tout ça et après
en fait ils vont ils ont des des modules pour chaque type de développeur c'est à dire ok tu vois
tu es un développeur java comment tu vas pouvoir implémenter redis en java en piton en javascript
donc ça c'est plutôt en dotnet voilà on va pouvoir implémenter java dotnet java dotnet non non
pas ici pas ici pas chez moi non mais tout toujours est-il que les enfin leur module de formation
en fait est assez assez bien fait et pareil il ya quelque chose qu'on n'a pas utilisé qu'on n'a pas
abordé c'est toute la structure de données où on fait de la probabilité en fait sans pour expliquer
hyper rapidement en fait au lieu de calculer à à à chaque fois en fait sur des grands grands
grands data set ils vont avoir en fait des des calculs qui vont être hyper hyper rapide par
exemple pour te pour générer en fait des hit maps par exemple sur voilà c'est des cartes avec des
zones de couleur ou des choses comme ça on va traiter un nombre astronomique de données à chaque
fois qu'il ya quelqu'un qui qui vient poser sa souris ici on va enregistrer une valeur et donc
en fait on va injecter cette donnée dans dans un hyper log log machin enfin qui importe un outil de
cher redis et en fait lui il va nous sortir un un count qui n'est pas le count exact mais qui en
fait un calcul de probabilité le plus proche possible et en fait ça nous permet en fait de jouer
avec des énormes data set et donc ça c'est assez puissant c'est hyper particulier pour le coup donc
là c'est le niveau un petit peu plus avancé pareil quand on commence à faire de la recherche avec
redis c'est le niveau un petit peu plus avancé donc là il faut faut vraiment commencer par les
bases et après en fait on peut pousser vraiment on va dire les connaissances et approfondir ces
connaissances avec ce site qui est redis universit et pareil voir aussi les streams qui sont super
intéressants si les s'il ya des personnes qui sont qui ont l'habitude de gérer en fait kafa ou
des gens des choses comme ça alors les puristes m'ont dit me diront que c'est pas tout à fait la
même chose néanmoins c'est des un message broker voilà c'est des événements qui arrivent et qui
sont distribués avec il ya qui un service qui va générer des événements et d'autres services
qui vont consommer ces événements là mais peut-être pas dans la même temporalité ou tout ça donc
c'est un usage assez spécifique de redis mais en tout cas c'est parfaitement géré pour ça et c'est
totalement adapté par contre ça nécessite de bien comprendre redis déjà dans son dans sa structure
globale quoi ok donc redis lab il y avait autre chose après redis lab ouais en fait il
est redis à une chaîne youtube où en fait ils font beaucoup beaucoup de conférences ils en font
trois quatre dans l'année donc on va avoir le redis indial redis london redis new york et en fait à
chaque fois ils mettent des conférences en ligne donc la chaîne youtube de redis c'est déjà assez
un bon réservoir où justement ils viennent aussi expliquer comment faire du pop sub alors c'est un
autre un autre truc qu'on n'a pas parlé mais on peut faire en fait du pop sub avec redis donc voilà
ils viennent vraiment développer chaque fonctionnalité ils ont fait des petites vidéos où ils expliquent
vraiment pas à pas comment ça marche comment l'utiliser comment l'implementer donc non c'est une
grosse grosse ressource entre entre redis universit et la chaîne youtube de redis clairement on peut
vraiment monter en compétence et comprendre toute la puissance de redis et pourquoi aussi dans les
derniers sondages sur les développeurs redis ressort quasiment en premier et en fait les tout
il y a beaucoup de développeurs qui sont fans de redis et qui aiment et moi le premier je
comprenais pas pourquoi c'est cet engouement là je le comprenais pas j'ai dit ouais je dis ouais bon
redis clé valeurs en fait il n'y a rien d'extraordinaire et en fait quand je me suis vraiment
penché je suis tombé dans le dans le dans la tannière vraiment et pour le coup je comprend
toute la puissance de tout ce qu'on peut faire avec redis et ouais en fait je suis fan je suis fan
je suis passionné c'était super intéressant j'ai appris bien de choses je me bah tu vois moi j'étais
resté un petit peu sur la gestion redis c'est du cash et puis tu vois tu nous a démontré le contraire
redis c'est plus puissant que du cash enfin ça fait très bien le cash ça c'est clair mais par
compte ça fait beaucoup d'autres choses et je pense que fréquent si penche un peu plus tous nous
développeurs développeuses donc voilà super intéressant j'espère que ça va les auditeurs
ont appris plein de choses en tout cas moi j'ai appris des choses cool merci merci
ouais moi je pense qu'on va en rester là sur redis après c'est à vous de
vous auditeurs d'aller chercher un petit peu plus loin et un grand merci d'être resté jusqu'au
bout de l'épisode on se revoit quand patrick il y aura probablement un épisode news à la fin du mois
et peut-être qu'après moi d'autres on va calmer un petit peu histoire de prendre un peu de vacances
quand même de partir un peu en vacances pour revenir fin et nervé au mois de septembre comme des
fou exactement exactement on verra ça sur le prochain épisode on reparlera ça marche merci patrick
merci à toi alex merci à tout le monde ciao ciao merci ciao retrouver double slash sur
la plateforme de podcasts préféré et sur le site internet du podcast 3w.slash-podcast.fr sur le site
vous allez retrouver tous les liens d'épisode les références évoquées durant l'émission

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

DoubleSlashPodcast

Double Slash, un podcast sur le développement web. Retrouvez-nous régulièrement pour parler de sujets variés tels que la JAMStack, l’accessibilité, l’écoconception, React.js, Vue.js, Next.js, Nuxt.js, le CSS et des retours d’expériences sur des implémentations.
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': None}, {'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere