Types de données Redis
Redis gère cinq principaux types de données : chaîne de caractères, hachage, liste, ensemble et ensemble trié. Chaque type possède des caractéristiques et des cas d'usage spécifiques, permettant une modélisation flexible des données.
Chaîne de caractères (string)
Le type chaîne est la structure la plus simple dans Redis, similaire à celle de Memcached. Une clé unique est associée à une valeur de type binaire, ce qui garantit la sécurité des données binaires. Cela signifie qu'une chaîne peut stocker n'importe quel contenu, comme une image JPEG ou un objet sérialisé. La taille maximale d'une valeur est de 512 Mo.
redis 127.0.0.1:6379> SET maCle "exempleDeValeur"
OK
redis 127.0.0.1:6379> GET maCle
"exempleDeValeur"
Dans cet exemple, la commande SET assigne la valeur "exempleDeValeur" à la clé "maCle", et GET récupère cette valeur. Une clé peut stocker jusqu'à 512 Mo de données.
Hachage (hash)
Un hachage Redis est une collection de paires champ-valeur, où chaque champ et valeur sont des chaînes. Ce type est particulièrement adapté pour représenter des objets, car il permet d'accéder à des sous-éléments de manière efficace.
redis 127.0.0.1:6379> DEL maCle
redis 127.0.0.1:6379> HMSET monObjet champ1 "Bonjour" champ2 "Monde"
OK
redis 127.0.0.1:6379> HGET monObjet champ1
"Bonjour"
redis 127.0.0.1:6379> HGET monObjet champ2
"Monde"
Ici, la commande HMSET définit deux paires champ-valeur dans l'objet "monObjet", et HGET extrait les valeurs corrrespondantes. Chaque hachage peut contenir environ 4 milliards de paires, soit 232 - 1 éléments.
Liste (list)
Une liste Redis est une séquence ordonnée de chaînes, où les éléments sont ajoutés selon l'ordre d'insertion. On peut insérer des éléments en tête (gauche) ou en queue (droite) de la liste, ce qui la rend utile pour des files d'attente ou des historiques.
redis 127.0.0.1:6379> DEL maCle
redis 127.0.0.1:6379> lpush maListe donnee1
(integer) 1
redis 127.0.0.1:6379> lpush maListe donnee2
(integer) 2
redis 127.0.0.1:6379> lpush maListe donnee3
(integer) 3
redis 127.0.0.1:6379> lrange maListe 0 10
1) "donnee3"
2) "donnee2"
3) "donnee1"
L'exemple ci-dessus utilise lpush pour ajouter trois éléments à la tête de "maListe", puis lrange pour afficher les éléments de l'indice 0 à 10. Une liste peut stocker jusqu'à 4 milliards d'éléments, soit 232 - 1.
Ensemble (set)
Un ensemble Redis est une collection non ordonnée de chaînes uniques. Les opérations d'ajout, de suppression et de recherche sont réalisées en complexité constante O(1), car elles reposent sur des tables de hachage internes.
sadd maCle element
La commande sadd ajoute un élément à l'ensemble. Si l'élément existe déjà, elle retourne 0 ; sinon, elle retourne 1.
redis 127.0.0.1:6379> DEL maCle
redis 127.0.0.1:6379> sadd ensembleExemple item1
(integer) 1
redis 127.0.0.1:6379> sadd ensembleExemple item2
(integer) 1
redis 127.0.0.1:6379> sadd ensembleExemple item3
(integer) 1
redis 127.0.0.1:6379> sadd ensembleExemple item3
(integer) 0
redis 127.0.0.1:6379> smembers ensembleExemple
1) "item1"
2) "item2"
3) "item3"
Dans cette démonstration, l'élément "item3" est tenté deux fois, mais seule la première insertion est conservée en raison de l'unicité des membres. La taille maximale d'un ensemble est de 232 - 1, soit environ 4 milliards de membres.
Ensemble trié (zset)
L'ensemble trié Redis combine les propriétés d'un ensemble avec un score associé à chaque membre, permettant de les trier par ordre croissant. Les membres restent uniques, mais les scores peuvent être idenitques.
zadd maCle score element
La commande zadd insère un élément avec un score dans l'ensemble. Si l'élément existe, le score est mis à jour.
redis 127.0.0.1:6379> DEL maCle
redis 127.0.0.1:6379> zadd ensembleTri score1 membre1
(integer) 1
redis 127.0.0.1:6379> zadd ensembleTri score1 membre2
(integer) 1
redis 127.0.0.1:6379> zadd ensembleTri score1 membre3
(integer) 1
redis 127.0.0.1:6379> zadd ensembleTri score1 membre3
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE ensembleTri 0 1000
1) "membre1"
2) "membre2"
3) "membre3"
Ici, tous les membres ont le même score "score1". La commande ZRANGEBYSCORE récupère les membres dont le score est compris entre 0 et 1000, les affichant dans l'ordre d'insertion ou selon le score si différents.