Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 29611|Απάντηση: 2

[Ρέντις] Το Redis χρησιμοποιεί σενάρια Lua για λεπτομερείς εξηγήσεις

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 30/4/2021 3:42:57 μ.μ. | | | |
Όσον αφορά το redis, όλοι το χρησιμοποιούν συχνά και το πιο χρησιμοποιούμενο σενάριο είναι η προσωρινή αποθήκευση δεδομένων.

αναθεώρηση

Διαφορά επιμονής Redis μεταξύ RDB και AOF
https://www.itsvse.com/thread-9555-1-1.html

Η εγκατάσταση του Docker εκτελεί την προσωρινή μνήμη Redis
https://www.itsvse.com/thread-8995-1-1.html

Παραδείγματα εξηγούν τι είναι η διείσδυση της κρυφής μνήμης Redis, η χιονοστιβάδα της κρυφής μνήμης και η ανάλυση της κρυφής μνήμης
https://www.itsvse.com/thread-8968-1-1.html

Redis wildcards για μαζική διαγραφή κλειδιών
https://www.itsvse.com/thread-7957-1-1.html

Εγκατάσταση του CentOS 7 Εκμάθηση Redis 5.0.3
https://www.itsvse.com/thread-7201-1-1.html

Εγκαταστήστε την επέκταση redis στην php 5.5.7 στο CentOS
https://www.itsvse.com/thread-7200-1-1.html

Πόσα κλειδιά μπορούν να αποθηκευτούν σε μια παρουσία redis και ποια είναι τα μέγιστα κλειδιά και τιμές;
https://www.itsvse.com/thread-6848-1-1.html

Το ζήτημα των redis Chinese δεν μπορεί να εμφανιστεί σωστά
https://www.itsvse.com/thread-5032-1-1.html

Το Redis επιτρέπει την απομακρυσμένη πρόσβαση
https://www.itsvse.com/thread-5011-1-1.html

Τα Windows αποτυγχάνουν να ξεκινήσουν την υπηρεσία Redis, σφάλμα 1067: Η διαδικασία τερματίζεται απροσδόκητα.
https://www.itsvse.com/thread-5010-1-1.html

Το CentOS εγκατέστησε το Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Το Redis ρυθμίζει την απομακρυσμένη σύνδεση και τους κωδικούς πρόσβασης
https://www.itsvse.com/thread-4101-1-1.html

Το Redis αδειάζει την προσωρινή μνήμη δεδομένων
https://www.itsvse.com/thread-4027-1-1.html

Διαμόρφωση επιμονής Redis και Off Persistence
https://www.itsvse.com/thread-4012-1-1.html

Η διαφορά μεταξύ save και bgsave στο redis
https://www.itsvse.com/thread-4010-1-1.html

Redis δύο μέθοδοι και αρχές εμμονής
https://www.itsvse.com/thread-4009-1-1.html

Το Redis έχει τρεις τρόπους για να ξεκινήσει
https://www.itsvse.com/thread-4008-1-1.html

Μέθοδος Redis για απόκρυψη παραθύρων γραμμής εντολών
https://www.itsvse.com/thread-2988-1-1.html

Πρόβλημα τιμής κατακερματισμού κατακερματισμού Redis
https://www.itsvse.com/thread-2587-1-1.html

5 πράγματα που πρέπει να γνωρίζετε πριν χρησιμοποιήσετε το Redis
https://www.itsvse.com/thread-2580-1-1.html

Το Redis τροποποιεί τον προεπιλεγμένο αριθμό θύρας και ορίζει τον κωδικό πρόσβασης
https://www.itsvse.com/thread-2577-1-1.html

Λήψη Redis windows 64-bit, επίσημη διεύθυνση λήψης
https://www.itsvse.com/thread-2576-1-1.html
Ξεκινώντας με το redis 2.6.0, το redis έχει ενσωματωμένο διερμηνέα Lua και παρέχει μια εντολή eval για την ανάλυση της αξιολόγησης του σεναρίου Lua.

Σύνταξη: eval script numkeys args

Παράμετροι:

eval — Το Redis παρέχει εντολές για την ανάλυση του σεναρίου lua

Σενάριο — Σενάριο Lua

numkeys — Καθορίζει τον αριθμό των κλειδιών στο σύνολο παραμέτρων ονόματος κλειδιού

keys — Το σύνολο παραμέτρων ονόματος κλειδιού, που αντιπροσωπεύεται από τον καθολικό πίνακα μεταβλητών KEYS, ξεκινώντας με δείκτη 1

args — Ένα σύνολο παραμέτρων κλειδιού-τιμής, που αντιπροσωπεύεται από έναν πίνακα καθολικών μεταβλητών ARGV, ξεκινώντας με δείκτη 1


Πλεονεκτήματα της χρήσης Lua στο Redis

Μειώστε την επιβάρυνση του δικτύου. Μπορούν να σταλούν πολλαπλά αιτήματα ταυτόχρονα με τη μορφή σεναρίων για τη μείωση του λανθάνοντος χρόνου δικτύου
Ατομικός χειρισμός. Το Redis θα εκτελέσει ολόκληρο το σενάριο στο σύνολό του, χωρίς να παρεμβάλλονται άλλες εντολές ενδιάμεσα. Επομένως, δεν χρειάζεται να ανησυχείτε για τις συνθήκες αγώνα και τις συναλλαγές κατά τη διαδικασία του σεναρίου.
Αποκαταστάθηκε. Τα βήματα που αποστέλλονται από τον πελάτη αποθηκεύονται επίμονα στο redis, έτσι ώστε άλλοι πελάτες να μπορούν να επαναχρησιμοποιήσουν το σενάριο χωρίς να χρειάζεται να χρησιμοποιήσουν κώδικα για να ολοκληρώσουν την ίδια λογική.

Ατομικότητα σεναρίου

Τα σενάρια Lua δεν μπορούν να έχουν χρονοβόρες λειτουργίες ή νεκρούς βρόχους, διαφορετικά το redis δεν θα δεχτεί άλλες εντολές και δεν θα εκτελεστεί για να σταματήσει την εκτέλεση του σεναρίου

Το Redis χρησιμοποιεί έναν μόνο διερμηνέα Lua για την εκτέλεση όλων των σεναρίων και διασφαλίζει ότι τα σενάρια εκτελούνται ατομικά.Αυτό σημαίνει ότι όταν εκτελείται ένα σενάριο, δεν θα εκτελεστούν άλλα σενάρια ή εντολές redis! Επομένως, εάν η τρέχουσα δέσμη ενεργειών εκτελείται αργά, ο διακομιστής ενδέχεται να μην είναι σε θέση να εκτελέσει την εντολή επειδή είναι απασχολημένος, όπως:

Κάθε σενάριο έχει ένα μέγιστο χρονικό όριο εκτέλεσης, η προεπιλεγμένη τιμή είναι 5 δευτερόλεπτα. Ο μέγιστος χρόνος εκτέλεσης ελέγχεται από την επιλογή lua-time-limit του αρχείου ρυθμίσεων redis.conf ή απευθείας χρησιμοποιώντας τις εντολές config get και config set. Όταν η εκτέλεση ενός σεναρίου φτάσει στον μέγιστο χρόνο εκτέλεσης, το Redis δεν το τερματίζει ενεργά, εκτελεί τα ακόλουθα βήματα:

(1) Το Redis καταγράφει ότι ένα σενάριο εξαντλείται

(2) Το Redis αρχίζει να δέχεται ξανά αιτήματα από άλλους πελάτες, αλλά δέχεται μόνο την εκτέλεση εντολών kill script και τερματισμού λειτουργίας nosave.

(3) Εάν το σενάριο εκτελεί μόνο λειτουργίες ανάγνωσης, χρησιμοποιήστε την εντολή kill script για να σταματήσετε αμέσως το σενάριο. Εάν το σενάριο εκτελεί μια λειτουργία εγγραφής, μόνο η εντολή shutdown save/nosave επιτρέπεται να σταματήσει τον διακομιστή για να αποτρέψει την εγγραφή των τρεχόντων δεδομένων στο δίσκο. (Σε αυτό το σημείο, ο διακομιστής είναι εκτός λειτουργίας και τα δεδομένα δεν θα αποθηκευτούν)


παράδειγμα

Εκτελέστε το σενάριο, οι παράμετροι είναι 2 κλειδιά και τιμή και η εντολή είναι η εξής:


Σενάρια Deadloop, η εκτέλεση του ακόλουθου σεναρίου θα έχει ως αποτέλεσμα το redis να μην μπορεί να επεξεργαστεί άλλες εντολές και να κολλήσει:

Δοκιμάστε να χρησιμοποιήσετε μια δέσμη ενεργειών για να προσθέσετε δεδομένα τύπου συμβολοσειράς με την ακόλουθη εντολή:

Εκτελέστε μερικά πιο σύνθετα σενάρια, εάν η τιμή του κλειδιού είναι ίση με την τιμή που περάσαμε, τότε διαγράψτε την προσωρινή μνήμη, διαφορετικά κάντε οτιδήποτε, η εντολή είναι η εξής:

Τα αποτελέσματα της υλοποίησης έχουν ως εξής:



(Τέλος)




Προηγούμενος:Το .NET/C# Lock Principle Monitor παρέχει μια εις βάθος εξήγηση
Επόμενος:Λύση IIS DELETE PUT request 405
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 10/5/2021 9:18:34 π.μ. |

Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η εντολή Redis Script Load χρησιμοποιείται για την προσθήκη σεναρίου σεναρίου στην προσωρινή μνήμη σεναρίου, αλλά δεν εκτελείται αμέσως.

Η εντολή EVAL προσθέτει επίσης το σενάριο στην προσωρινή μνήμη του σεναρίου, αλλά αξιολογεί αμέσως το σενάριο εισόδου.

Εάν το δεδομένο σενάριο βρίσκεται ήδη στην κρυφή μνήμη, τότε δεν γίνεται καμία ενέργεια.

Αφού προστεθεί το σενάριο στην κρυφή μνήμη, το σενάριο μπορεί να κληθεί χρησιμοποιώντας το άθροισμα ελέγχου SHA1 του σεναρίου μέσω της εντολής EVALSHA. (Αυτό σημαίνει επίσης.)Το ίδιο σενάριο εκτελεί την ίδια τιμή sha1 σε οποιονδήποτε διαφορετικό διακομιστή redis

Τα σενάρια μπορούν να παραμείνουν στην κρυφή μνήμη για άπειρο χρονικό διάστημα μέχρι να εκτελεστεί το SCRIPT FLUSH.



 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 12/5/2021 11:38:55 π.μ. |
Προσδιορίστε εάν η δέσμη ενεργειών lua βρίσκεται στο cache


Μετά την επανεκκίνηση του Redis, το σενάριο Lua διαγράφεται αυτόματα, δεν θα είναι μόνιμη

Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com