Premiers pas avec Redis et PHP pour un stockage rapide des données

Le populaire moteur de stockage Redis est un excellent outil indispensable dans l'arsenal de tout développeur de logiciel. Le moteur de stockage en mémoire permet un stockage et une récupération extrêmement rapides des données, jusqu'à 32 millions de requêtes par seconde, ce qui en fait un complément de premier ordre à tout moteur de base de données majeur.

Plongeons-nous et apprenons à 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, d'où des limitations de taille. Cela dépend de votre infrastructure de serveur, mais dans l'intérêt de cet article et de la 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é à 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 éléments de données fréquemment consultés.

Comment installer Redis

En supposant que vous exécutez 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 oui, 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 de votre choix. 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 deux clés.

 127.0.0.1:6379> set full_name "John Doe"
127.0.0.1:6379> set units 5

Vous pouvez maintenant lister toutes les clés actuellement dans la base de données Redis avec la commande keys.

 127.0.0.1:6379> keys *

Cela se traduira par l'affichage des deux clés que vous avez précédemment définies, nom_ complet et unités . 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 facilement être 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 touche «unités» de 5 à 7.

 127.0.0.1:6379> incrby units 2

Commandes de liste

Les listes dans Redis sont des tableaux unidimensionnels avec un ordre spécifique et permettent de dupliquer des éléments dans différentes positions de la liste. Les é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 dans une liste dans 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 entiers à la fin de la commande, le premier qui définit la position dans la liste à partir de laquelle commencer, et le second est le nombre d'éléments à renvoyer 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 de chaque extrémité d'une liste à l'aide des 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 à tout moment des paires clé-valeur 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 ont 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 nombres entiers contenus 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 un hachage entièrement en incluant toutes les paires clé-valeur à l'aide de la commande del .

 127.0.0.1:6379> del user:581

Expiration des clés Redis

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.

Connectez-vous à Redis avec PHP

Maintenant que vous avez appris les bases du stockage et de la récupération des 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.

 <?php
// 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'expiration 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 à partir de l'objet Redis comme illustré ci-dessus.

Vous êtes sur votre chemin!

Félicitations, vous avez appris les bases du stockage et de la récupération des données à une vitesse fulgurante via le moteur de stockage Redis, y compris comment se connecter et s'interfacer 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 excellent endroit pour continuer à explorer Redis et toutes ses fonctionnalités.