Concernant les redis, tout le monde l’utilise souvent, et le scénario le plus utilisé est la mise en cache des données.
révision
À partir de redis 2.6.0, redis dispose d’un interpréteur Lua intégré et fournit une commande d’évaluation pour analyser l’évaluation du script Lua.
Syntaxe : eval script numkeys args
Paramètres :
Eval — Redis fournit des commandes pour analyser le script Lua
Script — script Lua
numkeys — Spécifie le nombre de clés dans l’ensemble de paramètres de nom de clé
keys — L’ensemble de paramètres de nom de clé, représenté par la variable globale KEYS array, commençant par un indice de 1
args — Un ensemble de paramètres clé-valeur, représentés par un tableau de variables globales ARGV, commençant par un indice de 1
Avantages de l’utilisation de Lua dans Redis
Réduisez les charges du réseau. Plusieurs requêtes peuvent être envoyées simultanément sous forme de scripts pour réduire la latence réseau Manipulation atomique. Redis exécutera l’ensemble du script dans son ensemble, sans aucune autre commande entre les deux. Il n’y a donc pas besoin de s’inquiéter des conditions de course et des transactions pendant le processus de scripting. Réintégré. Les pas envoyés par le client sont stockés de manière persistante dans Redis afin que d’autres clients puissent réutiliser le script sans avoir à utiliser du code pour compléter la même logique.
Atomicité de l’écriture
Les scripts Lua ne peuvent pas avoir d’opérations longues ou de boucles mortes, sinon Redis n’acceptera pas d’autres commandes et ne s’exécutera pas pour arrêter l’exécution du script
Redis utilise un seul interpréteur Lua pour exécuter tous les scripts et garantit que les scripts sont exécutés de manière atomique.Cela signifie que lorsqu’un script est en cours, aucun autre script ni commande redis ne sera exécuté! Par conséquent, si le script courant s’exécute lentement, le serveur peut ne pas pouvoir exécuter la commande car il est occupé, par exemple :
Chaque script a une limite maximale de temps d’exécution, la valeur par défaut étant de 5s. Le temps d’exécution maximal est contrôlé par l’option de limite de temps lua du fichier de configuration redis.conf, ou directement en utilisant les commandes config get et config set. Lorsqu’une exécution d’un script atteint son temps maximal d’exécution, Redis ne la termine pas activement, elle exécute les étapes suivantes :
(1) Redis indique qu’un script est à court de temps
(2) Redis commence à réaccepter les requêtes d’autres clients, mais n’accepte que l’exécution des commandes de suppression du script et le nosave d’arrêt.
(3) Si le script n’effectue que des opérations de lecture, utiliser la commande « script kill » pour arrêter immédiatement le script ; Si le script effectue une opération d’écriture, seule la commande d’arrêt de sauvegarde/no-sauvegarde est autorisée à arrêter le serveur afin d’empêcher l’écriture des données actuelles sur le disque. (À ce moment-là, le serveur est en panne et les données ne seront pas sauvegardées)
exemple
Exécutez le script, les paramètres sont 2 clé et valeur, et la commande est la suivante :
Dans les scripts deadloop, exécuter le script suivant fera en sorte que Redis ne puisse pas traiter d’autres commandes et se bloquera :
Essayez d’utiliser un script pour ajouter des données de type chaîne avec la commande suivante :
Exécutez des scripts plus complexes, si la valeur de la clé est égale à celle que nous avons passée, puis supprimez le cache, sinon faites quoi que ce soit, la commande est la suivante :
Les résultats de la mise en œuvre sont les suivants :
(Fin)
|