Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 29611|Répondre: 2

[Redis] Redis utilise des scripts Lua pour des explications détaillées

[Copié le lien]
Publié sur 30/04/2021 15:42:57 | | | |
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

Différence de persistance de Redis entre RDB et AOF
https://www.itsvse.com/thread-9555-1-1.html

L’installation Docker exécute le cache Redis
https://www.itsvse.com/thread-8995-1-1.html

Des exemples expliquent ce que sont la pénétration du cache, l’avalanche de cache et la défaillance du cache Reddis
https://www.itsvse.com/thread-8968-1-1.html

Des jokers redis pour supprimer les clés en bloc
https://www.itsvse.com/thread-7957-1-1.html

Tutoriel d’installation Redis 5.0.3 de CentOS 7
https://www.itsvse.com/thread-7201-1-1.html

Installez l’extension Redis sous php 5.5.7 sous CentOS
https://www.itsvse.com/thread-7200-1-1.html

Combien de clés peuvent être stockées dans une instance Redis, et quelles sont les clés et valeurs maximales ?
https://www.itsvse.com/thread-6848-1-1.html

La question des redis chinois ne peut pas être correctement présentée
https://www.itsvse.com/thread-5032-1-1.html

Redis permet l’accès à distance
https://www.itsvse.com/thread-5011-1-1.html

Windows ne démarre pas le service Redis, erreur 1067 : Le processus se termine de manière inattendue.
https://www.itsvse.com/thread-5010-1-1.html

CentOS a installé Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis configure les mots de passe de connexion et d’accès à distance
https://www.itsvse.com/thread-4101-1-1.html

Redis vide le cache de données
https://www.itsvse.com/thread-4027-1-1.html

Configuration de persistance de Redis et persistance désactivée
https://www.itsvse.com/thread-4012-1-1.html

La différence entre sauvegarder et sauvegarder dans Redis
https://www.itsvse.com/thread-4010-1-1.html

Redis : deux méthodes et principes de persistance
https://www.itsvse.com/thread-4009-1-1.html

Redis a trois façons de commencer
https://www.itsvse.com/thread-4008-1-1.html

Méthode Redis pour masquer les fenêtres en ligne de commande
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Problème de la valeur de hachage
https://www.itsvse.com/thread-2587-1-1.html

5 choses à savoir avant d’utiliser Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis modifie le numéro de port par défaut et définit le mot de passe d’accès
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit téléchargement, adresse officielle de téléchargement
https://www.itsvse.com/thread-2576-1-1.html
À 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)




Précédent:Le moniteur principal de verrouillage .NET/C# offre une explication approfondie
Prochain:Solution 405 de la requête PUT IIS DELETE
 Propriétaire| Publié sur 10/05/2021 09:18:34 |

La connexion hyperlientérée est visible.
La commande Redis Script Load est utilisée pour ajouter un script scripté au cache de scripts, mais elle n’est pas exécutée immédiatement.

La commande EVAL ajoute également le script au cache du script, mais elle évalue immédiatement le script d’entrée.

Si le script donné est déjà dans le cache, aucune action n’est prise.

Après l’ajout du script au cache, il peut être appelé en utilisant la somme de contrôle SHA1 du script via la commande EVALSHA. (Cela signifie aussi.)Le même script exécute la même valeur sha1 sur n’importe quel serveur Redis différent

Les scripts peuvent rester dans le cache pendant une durée infinie jusqu’à ce que le SCRIPT FLUSH soit exécuté.



 Propriétaire| Publié sur 12/05/2021 11:38:55 |
Déterminez si le script lua est dans le cache


Après le redémarrage de Davis, le script Lua est automatiquement effacé, ne sera pas permanent

Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com