Introduction à Redis, le serveur à tout faire
Redis n’est pas une base NoSQL.
Enfin si, un peu mais pas tout à fait. Redis se situe à peu près à mi-chemin entre un serveur de cache, une base NoSQL, un serveur de dictionnaire.
Il a l’avantage d’être très rapide car stocké en RAM, et persistant car copié sur disque régulièrement.
Environnement de test
Un container est là pour vous :
docker run -it dans-les-nuages/redis /bin/bash root@xxxxxx:/# service redis-server start root@xxxxxx:/# redis-cli redis 127.0.0.1:6379>
Les commandes qui suivent peuvent être testée par redis-cli.
Chaînes (String) :
Les chaînes (enregistrements de type clé-valeur) sont très simples à CRUDer (CRUD = Create Read Update Delete).
Pour plus d’info sur les chaînes : help @string
# CREATE set prenom "jean-patrice" # READ get prenom "jean-patrice" # UPDATE set prenom "jean-patrice benjamin" get prenom "jean-patrice benjamin" # DELETE del prenom get prenom (nil)
Vu comme ça, ça ressemble à un tableau associatif sauf que c’est accessible en réseau donc d’une appli à une autre.
Comme je le disais les données sont en RAM mais elles sont écrites régulièrement en dur.
Tester donc l’arrêt et le redémarrage du container, les données doivent rester en place.
Listes :
Les listes Redis sont des collections de chaînes de caractères triées par ordre d’insertion.
Pour plus d’info sur les listes : help @list
# CREATE rpush users "toto" rpush users "titi" rpush users "tata" # READ llen users 3 lrange users 0 2 1) "toto" 2) "titi" 3) "tata" # ou quelle que soit la longueur : lrange users 0 -1 1) "toto" 2) "titi" 3) "tata" # UPDATE # remplacer la valeur "titi" par "tutu" lset users 1 "tutu" lrange users 1 1 1) "tutu" # DELETE # Supprimer une valeur lrem users 2 tutu lrange users 0 -1 1) "toto" 2) "tata" # Supprimer l'enregistrement del users get users (nil)
Sets :
Les sets sont des collections de chaînes de caractères non triées.
Pour plus d’info sur les sets : help @set
# CREATE sadd users "toto" sadd users "titi" sadd users "tata" # READ # Toutes les entrées du set smembers users 1) "tata" 2) "titi" 3) "toto" # une entrée aléatoire srandmember users 1) "titi" # DELETE # Supprimer une valeur srem users titi smembers users 1) "toto" 2) "tata" # Supprimer l'enregistrement del config get config (nil)
HMAP
Les HMAPs sont des ensembles de couples clé-valeurs.
Pour plus d’info sur les hmaps : help @hmap
# CREATE hmset config vcpu 2 ram 512M cdrom yes workingdir /tmp/work # READ # Toutes les entrées du hmap hgetall config 1) "vcpu" 2) "2" 3) "ram" 4) "512M" 5) "cdrom" 6) "yes" # une entrée hget config ram 1) "512M" # DELETE # Supprimer une clé-valeur hdel config vcpu hgetall config 1) "ram" 2) "512M" 3) "cdrom" 4) "yes" # Supprimer l'enregistrement del config get config (nil)