Présentation de RedisGears |  Redis

Présentation de RedisGears | Redis

À RedisConf19, nous avons annoncé la sortie d’un nouveau module appelé RedisGears. Vous avez peut-être déjà vu d’autres modules de Redis ou de la communauté dans son ensemble, mais Gears défiera toutes vos attentes. Cela repousse vraiment les limites de ce qui est possible avec les modules. La seule mise en garde est qu’il est toujours en aperçu, donc, bien que vous puissiez déjà l’essayer, vous devrez attendre un peu plus pour qu’il atteigne la disponibilité générale et soit officiellement pris en charge.

Scripts d’engrenages

A première vue, RedisGears ressemble à un langage de script à usage général qui peut être utilisé pour interroger vos données dans Redis. Imaginez avoir quelques hashmaps dans votre base de données Redis avec des informations relatives à l’utilisateur telles que âge et premier Dernier Nom.

Voici la répartition de l’exécution du script RedisGears :

  1. Il est exécuté sur toutes les clés qui correspondent au utilisateur:* motif.
  2. Le script filtre ensuite toutes les clés qui ont le âge champ de hachage inférieur (ou égal à) 35.
  3. Il exécute ensuite toutes les touches restantes via une fonction qui appelle DEL dessus (c’est-à-dire que les clés sont supprimées).
  4. Enfin, il renvoie à la fois les noms de clé et les valeurs de clé au client.

Cet exemple simple montre comment vous pouvez utiliser un script Gears similaire à la façon dont vous utiliseriez le langage de requête pour toute autre base de données. Mais, en fait, RedisLes scripts Gears peuvent faire beaucoup plus parce qu’ils sont des fonctions Python exécutées dans un interpréteur Python à part entière dans Redis, sans pratiquement aucune limitation. Laissez-moi vous montrer pourquoi c’est important :

Dans cet exemple, j’ai installé numpy dans mon serveur en utilisant pépin afin que je puisse l’utiliser dans mes scripts. Cela signifie que toutes les bibliothèques Python que vous aimez, et même votre propre code, peuvent désormais être utilisées pour traiter des données dans Redis. Comment est-ce soigné?

Dans cet essentielvous pouvez lire comment installer les packages Python dans notre conteneur RedisGears Docker.

Gears exécute des scripts Python complets

Vous avez peut-être déjà remarqué que les one-liners à l’intérieur de redis-cli ne sont pas un moyen très clair d’écrire des scripts RedisGears. Heureusement, le RG.PYEXECUTE la commande ne se limite pas à ceux-là. Vous pouvez également lui fournir des fichiers source Python à part entière. Cela signifie également que le script peut contenir des fonctions Python normales, vous n’êtes donc pas obligé d’utiliser des lambdas si vous ne le souhaitez pas. Permettez-moi de montrer quelques façons de charger un script Python. Voici une version plus lisible de l’exemple précédent :

Avec redis-cli

Utiliser Python (ou tout autre langage)

Gears est compatible avec les clusters

RedisGears peut également comprendre la topologie de votre cluster et propager les commandes en conséquence. Nous avons déjà utilisé implicitement cette fonctionnalité dans nos exemples précédents, car les scripts se comporteraient comme prévu lorsqu’ils seraient exécutés dans un cluster (c’est-à-dire que chaque fragment ferait sa part du travail et agrégerait finalement tous les résultats partiels si nécessaire).

Vous aurez parfois besoin d’un contrôle plus précis sur la façon dont votre calcul est exécuté, en particulier pour les pipelines à plusieurs étapes où vous avez une étape intermédiaire d’agrégation/remaniement. A cet effet, vous avez à votre disposition recueillir et répartition. Celles-ci iront respectivement d’une séquence distribuée de valeurs à une liste matérialisée à l’intérieur d’un seul nœud et, inversement, à un flux distribué fragmenté selon une stratégie de votre choix.

Vous pouvez également lancer une tâche qui ne nécessite pas que le client reste connecté et attendre un résultat. Lorsque vous ajoutez l’option DÉBLOCAGE argument à RG.PYEXECUTE, vous obtiendrez immédiatement un jeton qui pourra être utilisé pour vérifier l’état du calcul et éventuellement récupérer le résultat final. Cela dit, sachez que les scripts RedisGears ne sont pas limités à des exécutions ponctuelles lorsqu’ils sont invoqués à partir d’un client.

Gears peut réagir aux flux et aux événements keyspace

Avez-vous déjà eu besoin de lancer des opérations à l’intérieur de Redis en réponse à un événement keyspace, ou de traiter rapidement de nouvelles entrées dans un flux pour une situation où faire tourner les consommateurs clients semble inutile ?

RedisGears permet une programmation réactive au niveau de la base de données. C’est comme utiliser des fonctions lambda, mais avec une latence considérablement plus faible et avec beaucoup moins de surcharge d’encodage/décodage.

Voici un script qui enregistre toutes les commandes exécutées sur les clés qui ont un vérifié- préfixe:

Ce deuxième script lit alors le journaux d’audit flux et met à jour le nombre d’accès dans un ensemble trié appelé comptes-d’audit:

Si vous enregistrez les deux requêtes, vous verrez que le flux et les décomptes sont mis à jour en temps réel. Ceci est un exemple très simple pour montrer ce qui peut être fait (ce n’est clairement pas un excellent système de journalisation d’audit). Si vous voulez un exemple plus concret, jetez un oeil à certaines recettes.

Gears est asynchrone

N’ayez pas peur de lancer des travaux exigeants. Les scripts RedisGears s’exécutent dans un thread séparé, de sorte qu’ils ne bloquent pas votre instance Redis. Cela signifie également que les requêtes Gears ne peuvent pas être intégrées dans une transaction Redis. Si vous avez un cluster constamment sous pression mémoire ou en cours d’exécution de charges de travail transactionnelles, les scripts Lua seront votre meilleur choix pour ajouter une logique transactionnelle personnalisée à vos opérations. Pour tout le reste, il y a Gears.

Prochaines étapes

Le moyen le plus rapide d’essayer RedisGears consiste à lancer un conteneur. Gardez à l’esprit que nos modules fonctionnent également avec Redis open source.

Nous avons un conteneur Docker sur DockerHub qui contient tous les modules Redis :

docker run -p 6379:6379 redis/redismod:latest

Nous avons également une version qui contient uniquement RedisGears :

docker run -p 6379:6379 redis/redisgears:latest

La documentation est disponible sur redisgears.io et le code est disponible sur GitHub.

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *