- Le type String (Chaîne de caractères)
String est la structure de données la plus basique de Redis. Elle peut stocker jusqu'à 512 Mo de données et est binaire-safe, ce qui signifie qu'elle peut contenir n'importe quel type de données : un nombre, une image sérialisée, un objet, etc.
Commandes courantes : SET, GET, APPEND, STRLEN
La commande APPEND ajoute une valeur à la fin d'une valeur existante et renvoie la longueur de la nouvelle chaîne. Si la clé n'existe pas, elle est créée.
STRLEN renvoie la longueur de la valeur associée à une clé.
127.0.0.1:6379> SET reference "donnees"
OK
127.0.0.1:6379> APPEND reference " inities"
(integer) 16
127.0.0.1:6379> GET reference
"donnees inities"
127.0.0.1:6379> STRLEN reference
(integer) 16
Opérations atomiques : INCR, DECR, INCRBY, DECRBY
Ces commandes permettent d'incrémenter ou de décrémenter la valeur d'une clé de manière atomique. INCR et DECR modifient la valeur de 1, tandis que INCRBY et DECRBY utilisent un incrément spécifié. La valeur doit être un entier.
127.0.0.1:6379> SET compteur 10
OK
127.0.0.1:6379> INCR compteur
(integer) 11
127.0.0.1:6379> DECRBY compteur 4
(integer) 7
127.0.0.1:6379> SET texte "non_numerique"
OK
127.0.0.1:6379> INCR texte
(error) ERR value is not an integer or out of range
Autres commandes String
GETSET remplace la valeur d'une clé et renvoie l'ancienne valeur. Utile pour des compteurs atomiques avec réinitialisation.
127.0.0.1:6379> INCR compteur_operations
(integer) 1
127.0.0.1:6379> GETSET compteur_operations 0
"1"
SETEX associe une clé à une valeur avec un temps d'expiration en secondes.
127.0.0.1:6379> SETEX session_temp 300 "active"
OK
127.0.0.1:6379> TTL session_temp
(integer) 298
SETNX (SET if Not eXists) définit la valeur d'une clé uniquement si celle-ci n'existe pas encore.
127.0.0.1:6379> SETNX cle_unique "valeur1"
(integer) 1
127.0.0.1:6379> SETNX cle_unique "valeur2"
(integer) 0
MSET, MGET et MSETNX opèrent sur plusieurs clés-valeurs simultanément.
127.0.0.1:6379> MSET id1 "alpha" id2 "beta"
OK
127.0.0.1:6379> MGET id1 id2
1) "alpha"
2) "beta"
127.0.0.1:6379> MSETNX id3 "gamma" id1 "nouveau"
(integer) 0
- Le type List (Liste)
Une liste Redis est une séquence ordonnée de valeurs de type String. Les éléments peuvent être ajoutés en tête ou en queue.
Ajout en tête : LPUSH, LPUSHX
LPUSH ajoute un ou plusieurs éléments à la tête de la liste. LPUSHX ne fonctionne que si la liste existe déjà.
127.0.0.1:6379> LPUSH file_attente "client1" "client2"
(integer) 2
127.0.0.1:6379> LRANGE file_attente 0 -1
1) "client2"
2) "client1"
127.0.0.1:6379> LPUSHX file_inexistante "clientX"
(integer) 0
Lecture et suppression : LRANGE, LPOP, LLEN
LRANGE extrait une portion de la liste. LPOP retire et renvoie le premier élément.
127.0.0.1:6379> LRANGE file_attente 0 0
1) "client2"
127.0.0.1:6379> LPOP file_attente
"client2"
127.0.0.1:6379> LLEN file_attente
(integer) 1
Manipulation d'éléments : LRREM, LSET, LINDEX, LTRIM
LREM supprime des occurrences d'un élément. LSET modifie la valeur à un index donné. LINDEX lit la valeur à un index. LTRIM réduit la liste à une sous-partie.
127.0.0.1:6379> LPUSH liste "a" "b" "a" "c"
(integer) 4
127.0.0.1:6379> LREM liste 1 "a"
(integer) 1
127.0.0.1:6379> LRANGE liste 0 -1
1) "c"
2) "a"
3) "b"
127.0.0.1:6379> LSET liste 1 "x"
OK
127.0.0.1:6379> LINDEX liste 1
"x"
127.0.0.1:6379> LTRIM liste 0 1
OK
127.0.0.1:6379> LRANGE liste 0 -1
1) "c"
2) "x"
Insertion et ajout en queue : LINSERT, RPUSH, RPOP, RPOPLPUSH
LINSERT insère un élément avant ou après un pivot existant. RPUSH ajoute en queue, RPOP retire de la queue. RPOPLPUSH retire un élément de la queue d'une source et l'ajoute en tête d'une destination.
127.0.0.1:6379> RPUSH liste_finale "un" "deux"
(integer) 2
127.0.0.1:6379> LINSERT liste_finale BEFORE "deux" "un_et_demi"
(integer) 3
127.0.0.1:6379> RPOP liste_finale
"deux"
127.0.0.1:6379> RPOPLPUSH liste_finale autre_liste
"un_et_demi"
- Le type Hash (Hachage)
Un hash stocke des paires champ-valeur. C'est idéal pour représenter des objets avec plusieurs attributs.
Commandes de base : HSET, HGET, HDEL, HLEN
127.0.0.1:6379> HSET vehicule:1 marque "Citroen" modele "DS"
(integer) 2
127.0.0.1:6379> HGET vehicule:1 marque
"Citroen"
127.0.0.1:6379> HDEL vehicule:1 modele
(integer) 1
127.0.0.1:6379> HLEN vehicule:1
(integer) 1
Opérations sur les valeurs : HINCRBY
HINCRBY incrémente la valeur numérique d'un champ d'un hash.
127.0.0.1:6379> HSET stats:page vues 10
(integer) 1
127.0.0.1:6379> HINCRBY stats:page vues 5
(integer) 15
Lecture groupée : HGETALL, HKEYS, HVALS, HMGET, HMSET
127.0.0.1:6379> HMSET user:1001 nom "Dupont" email "d@example.com"
OK
127.0.0.1:6379> HGETALL user:1001
1) "nom"
2) "Dupont"
3) "email"
4) "d@example.com"
127.0.0.1:6379> HKEYS user:1001
1) "nom"
2) "email"
127.0.0.1:6379> HMGET user:1001 nom telephone
1) "Dupont"
2) (nil)
- Le type Set (Ensemble)
Un set est une collection non ordonnée de valeurs uniques. Il supporte les opérations d'union, d'intersection et de différence.
Gestion des membres : SADD, SMEMBERS, SCARD, SISMEMBER
127.0.0.1:6379> SADD tags:article1 "redis" "database" "nosql"
(integer) 3
127.0.0.1:6379> SMEMBERS tags:article1
1) "nosql"
2) "redis"
3) "database"
127.0.0.1:6379> SCARD tags:article1
(integer) 3
127.0.0.1:6379> SISMEMBER tags:article1 "redis"
(integer) 1
Opérations sur les sets
SPOP retire un élément aléatoire. SREM supprime un ou plusieurs membres. SRANDMEMBER renvoie un ou plusieurs membres aléatoires sans les supprimer. SMOVE déplace un membre d'un set source vers un set destination.
127.0.0.1:6379> SADD set_a "x" "y" "z"
(integer) 3
127.0.0.1:6379> SPOP set_a
"x"
127.0.0.1:6379> SMOVE set_a set_b "y"
(integer) 1
127.0.0.1:6379> SRANDMEMBER set_a
"z"
- Le type Sorted Set (Ensemble ordonné)
Un sorted set est un ensemble où chaque membre est associé à un score (un nombre flottant). Les membres sont maintenus triés par leur score. Si deux membres ont le même score, ils sont triés par ordre lexicographique.
Ajout et récupération : ZADD, ZRANGE, ZSCORE, ZRANK
127.0.0.1:6379> ZADD classement 95 "Alice" 87 "Bob" 92 "Charlie"
(integer) 3
127.0.0.1:6379> ZRANGE classement 0 -1 WITHSCORES
1) "Bob"
2) "87"
3) "Charlie"
4) "92"
5) "Alice"
6) "95"
127.0.0.1:6379> ZSCORE classement "Alice"
"95"
127.0.0.1:6379> ZRANK classement "Charlie"
(integer) 1
Requêtes par score : ZRANGEBYSCORE, ZCOUNT
127.0.0.1:6379> ZRANGEBYSCORE classement 90 +inf WITHSCORES
1) "Charlie"
2) "92"
3) "Alice"
4) "95"
127.0.0.1:6379> ZCOUNT classement 80 90
(integer) 1
Suppression : ZREM, ZREMRANGEBYSCORE, ZREMRANGEBYRANK
127.0.0.1:6379> ZREM classement "Bob"
(integer) 1
127.0.0.1:6379> ZREMRANGEBYSCORE classement -inf 90
(integer) 0
127.0.0.1:6379> ZREMRANGEBYRANK classement 0 0
(integer) 1
Traitement inverse : ZREVRANGE, ZREVRANK, ZREVRANGEBYSCORE
Ces commandes fonctionnent comme leurs homologues, mais retournent les résultats dans l'ordre décroissant des scores.
127.0.0.1:6379> ZADD scores 10 "A" 20 "B" 30 "C"
(integer) 3
127.0.0.1:6379> ZREVRANGE scores 0 -1 WITHSCORES
1) "C"
2) "30"
3) "B"
4) "20"
5) "A"
6) "10"
127.0.0.1:6379> ZREVRANK scores "A"
(integer) 2