Le populaire moteur de stockage Redis est un excellent outil indispensable dans l'arsenal de tout développeur de logiciels. Le moteur de stockage en mémoire permet un stockage et une récupération incroyablement rapides des données, jusqu'à un nombre impressionnant de 32 millions de requêtes par seconde, ce qui en fait un complément idéal à tout moteur de base de données majeur.
Plongeons-nous et apprenons comment accélérer nos opérations en ligne.
Redis : avantages contre inconvénients
Le plus grand avantage de Redis est qu'il s'agit d'un magasin de données purement en mémoire , ce qui signifie qu'il est incroyablement rapide car la base de données est stockée dans la RAM, donc aucune opération d'E/S de fichier sur le disque dur n'est requise.
D'autres avantages supplémentaires sont sa simplicité, la prise en charge du clustering via Redis-cluster, ainsi que sa prise en charge de huit types de données différents, vous offrant la flexibilité nécessaire pour stocker et gérer vos données selon vos besoins.
Cependant, son plus grand inconvénient est également le fait qu'il s'agit uniquement d'un magasin de données en mémoire, ce qui entraîne des limitations de taille. Cela dépend de votre infrastructure de serveur, mais pour des raisons de simplicité et de simplicité, votre base de données Redis typique ne contiendra qu'un maximum de 2 à 4 Go de données.
Cela signifie que Redis est utilisé pour compléter les moteurs de base de données couramment utilisés tels que mySQL, PostgreSQL et MongoDB, et n'est pas destiné à les remplacer. Les principales utilisations de Redis incluent un cache, des données temporaires/récentes qui expireront dans un court laps de temps ou de petits morceaux de données fréquemment consultés.
Comment installer Redis
En supposant que vous exécutiez Ubuntu ou toute distribution Linux contenant la commande apt-get , pour installer Redis, exécutez simplement la commande suivante dans le terminal :
sudo apt-get install redis-server
Ensuite, vérifiez que Redis a été installé avec succès. Dans le terminal, exécutez la commande :
redis-cli --version
Cela devrait imprimer la version de Redis que vous exécutez et, en supposant que cela soit le cas, exécutez la commande suivante pour vous connecter à Redis :
redis-cli
Cela vous donnera une invite Redis non standard dans le terminal, qui ressemble à quelque chose comme :
127.0.0.1:6379>
Commandes de chaîne
Chaque entrée dans Redis est identifiée par une clé, qui peut être n'importe quelle chaîne sans espace que vous souhaitez. Les chaînes ne contiennent qu'une seule valeur et, par exemple, exécutez les commandes suivantes à l'invite Redis pour définir une valeur sur quelques clés.
127.0.0.1:6379> set full_name "John Doe" 127.0.0.1:6379> set units 5
Vous pouvez maintenant répertorier toutes les clés actuellement dans la base de données Redis avec la commande keys.
127.0.0.1:6379> keys *
Cela entraînera l'affichage des deux clés que vous avez définies précédemment, full_name et units . Vous pouvez voir la valeur de ces clés avec la commande get.
127.0.0.1:6379> get full_name "John Doe" 127.0.0.1:6379> get units 5
La suppression des clés peut être facilement effectuée avec la commande del.
127.0.0.1:6379> del full_name
Il est également possible d'incrémenter rapidement un entier avec la commande hincrby . Ce qui suit incrémentera la clé "unités" de 5 à 7.
127.0.0.1:6379> incrby units 2
Liste des commandes
Les listes dans Redis sont des tableaux unidimensionnels avec un ordre spécifique et permettent des éléments en double dans différentes positions de la liste. Des éléments peuvent être ajoutés à gauche ou à droite d'une liste avec les commandes lpush et rpush .
127.0.0.1:6379> lpush colors blue 127.0.0.1:6379> rpush colors red yellow green
Comme vous pouvez le voir dans l'exemple ci-dessus, vous pouvez pousser plusieurs éléments vers une liste au sein d'une seule commande. Nous pouvons maintenant afficher tous les éléments de la liste en utilisant la commande lrange .
127.0.0.1:6379> lrange colors 0 -1
Il y a deux nombres entiers à la fin de la commande, le premier qui définit la position dans la liste à laquelle commencer, et le second est le nombre d'éléments à retourner avec -1 signifiant tous les éléments. Le résultat de la commande ci-dessus sera bleu, rouge, jaune, vert .
Vous pouvez également supprimer des éléments à chaque extrémité d'une liste en utilisant les commandes lpop et rpop .
127.0.0.1:6379> lpop colors blue 127.0.0.1:6379> rpop colors green
Vous pouvez également obtenir le nombre d'éléments dans une liste avec la commande llen .
127.0.0.1:6379> llen colors (integer) 2
Enfin, vous pouvez supprimer un élément d'une liste via la commande lrem .
127.0.0.1:6379> lrem colors 1 green (integer) 1
La commande lrem commence par le nom de la liste, suivi du nombre d'occurrences à supprimer et du nom de l'élément à supprimer. Il renverra le nombre d'occurrences trouvées et supprimées de la liste.
Commandes de hachage
L'un des types de données les plus populaires dans Redis est le hachage, qui vous permet de stocker plusieurs paires clé-valeur dans une seule entrée. La clé n'a pas déjà besoin d'exister et vous définissez des paires clé-valeur à tout moment avec la commande hset .
127.0.0.1:6379> hset user:581 full_name "Jane Doe" 127.0.0.1:6379> hset user:581 points 500
Vous pouvez également définir plusieurs paires clé-valeur d'un hachage dans une seule commande à l'aide de la commande hmset .
127.0.0.1:6379> hmset user:581 email [email protected] gender F
Le hachage identifié par l' utilisateur clé :581 a maintenant un total de quatre paires clé-valeur, qui peuvent toutes être facilement récupérées avec la commande hgetall .
127.0.0.1:6379> hgetall user:581 1) "full_name" 2) "Jane Doe" 3) "points" 4) "500" 5) "email" 6) "[email protected]" 7) "gender" 8) "F"
Vous pouvez également obtenir la valeur d'une seule paire clé-valeur dans un hachage à l'aide de la commande get .
127.0.0.1:6379> hget user:581 email "[email protected]"
Pour tous les entiers dans le hachage, vous pouvez les incrémenter d'un montant spécifié avec la commande code hincrby .
127.0.0.1:6379> hincrby user:581 points 20 (integer) 520
La valeur de la clé de points dans le hachage a maintenant été incrémentée de 20 à 520. Une seule paire clé-valeur dans un hachage peut être supprimée avec la commande hdel .
127.0.0.1:6379> hdel user:581 gender
Vous pouvez également supprimer entièrement un hachage incluant toutes les paires clé-valeur à l'aide de la commande del .
127.0.0.1:6379> del user:581
Clés Redis expirées
Une autre excellente fonctionnalité de Redis est la possibilité d'expirer automatiquement les clés après un nombre défini de secondes à l'aide de la commande expire . Veuillez noter que vous ne pouvez expirer que des clés complètes et non des éléments singuliers dans une liste ou un hachage. Par exemple:
127.0.0.1:6379> expire full_name 10
Cela définira un délai d'expiration de 10 secondes sur la clé full_name que vous avez créée dans la section des chaînes. Après avoir exécuté la commande ci-dessus, attendez 10 secondes, puis essayez à nouveau de récupérer la valeur de la clé.
127.0.0.1:6379> get full_name (nil)
Comme prévu, la clé a maintenant expiré, nous obtenons donc null.
Se connecter à Redis avec PHP
Maintenant que vous avez appris les bases du stockage et de la récupération de données avec Redis, il est temps de les connecter à votre logiciel. Tous les langages de programmation ont des modules/extensions pour Redis, mais pour cet exemple, nous utiliserons PHP.
Vous devez d'abord installer l'extension PHP-Redis car elle n'est pas installée par défaut. Dans le terminal, exécutez la commande.
sudo apt-get install php-redis
Une fois installé, assurez-vous de redémarrer PHP-fpm pour que l'extension soit correctement chargée. Voici du code PHP qui se connecte et s'interface avec Redis.
<> // Connect to redis $conn = new redis(); try { $conn->connect('127.0.0.1', 6379, 5); } catch (RedisException $e) { die("Unable to connect to redis"); } // Set string $conn->set('country', 'Canada'); // Get string $value = $conn->get('country'); echo "Country is: $value "; // Define a profile $profile = [ 'username' => 'mike', 'full_name' => 'Mike Smith', 'email' => '[email protected]', 'country' => 'Australia' ]; // Create a hash $conn->hmset('user:188', $profile); // Get all values of the profile hash $values = $conn->hgetall('user:188'); print_r($values); // Get only the e-mail address $email = $conn->hget('user:188', 'email'); echo "E-mail is: $email "; // Expire the hash in 15 seconds $conn->expire('user:188', 15);
L'exemple de code ci-dessus devrait être assez simple. Il se connecte d'abord à Redis avec un délai d'attente de 5 secondes, puis procède à la définition et à l'obtention d'une chaîne et d'un hachage. Toutes les commandes Redis peuvent être exécutées via la POO en les appelant directement depuis l'objet Redis comme dans l'exemple ci-dessus.
Vous êtes sur votre chemin !
Félicitations, vous avez appris les bases du stockage et de la récupération de données à une vitesse fulgurante via le moteur de stockage Redis, y compris la connexion et l'interface avec Redis à l'aide de PHP.
Veuillez noter que cet article ne couvre que les bases, et la page Types de données Redis de la documentation est un endroit idéal pour continuer à explorer Redis et toutes ses fonctionnalités.