Redis XTRIM

Redis Xtrim



Λεπτομέρειες χαμηλού επιπέδου των ροών Redis

Οι ροές Redis είναι μια δομή δεδομένων μόνο με προσάρτημα που παρέχει ένα σύνολο εξαιρετικά αποδοτικών λειτουργιών ανάγνωσης και εισαγωγής με μηχανισμό αποθήκευσης αποδοτικής μνήμης. Εσωτερικά, οι ροές Redis χρησιμοποιούν μια δομή δεδομένων δέντρου Radix που είναι ένα δέντρο βελτιστοποιημένο για χώρο με υψηλή απόδοση μνήμης.

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









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



Η εντολή XTRIM

Η εντολή XTRIM χρησιμοποιείται για την αποκοπή των καταχωρήσεων μιας ροής με βάση μια δεδομένη τιμή κατωφλίου. Το όριο μπορεί να είναι ένας μέγιστος αριθμός καταχωρίσεων ανά ροή ή ένα παλαιότερο αναγνωριστικό καταχώρισης. Η εντολή XTRIM δέχεται τον τύπο του κατωφλίου ως όρισμα εντολής. Η σύνταξη της εντολής XTRIM είναι η εξής.





XTRIM stream_key MAXLEN | ΜΙΝΙΔ [ = | ~ ] οριακή τιμή [ Αριθμός LIMIT ]

stream_key : Το κλειδί του ρέματος Redis.

MAXLEN : Το μέγιστο μήκος της ροής μετά την περικοπή των καταχωρίσεων. Θα αφαιρεθούν όλες οι καταχωρήσεις που υπερβαίνουν το μήκος της ροής, το οποίο καθορίζεται από την τιμή κατωφλίου. Αυτό το όρισμα είναι ένας θετικός ακέραιος αριθμός.

ΜΙΝΙΔ : Το ελάχιστο αναγνωριστικό ροής που πρέπει να παραμείνει μετά την περικοπή των καταχωρίσεων. Θα αφαιρεθούν όλες οι εγγραφές που έχουν αναγνωριστικά χαμηλότερα από το καθορισμένο όριο. Κάθε φορά που καθορίζετε αυτήν την παράμετρο, το όριο γίνεται αναγνωριστικό ροής.

= χειριστής : Όταν καθορίζεται, η ακριβής περικοπή θα πραγματοποιηθεί με βάση την τιμή κατωφλίου.

~ χειριστής : Όταν καθορίζεται, θα πραγματοποιηθεί σχεδόν ακριβής περικοπή με βάση την τιμή κατωφλίου και το μέγεθος του μακρο-κόμβου.

οριακή τιμή : Η τιμή κατωφλίου που βασίζεται στο όρισμα MAXLEN ή MINID.

Αριθμός LIMIT : Ο μέγιστος αριθμός καταχωρήσεων που πρέπει να αφαιρεθούν.

Χρήση Περίπτωσης 01 – Κατάργηση καταχωρήσεων ροής με βάση το μέγιστο μήκος

Ας υποθέσουμε ότι μια τουριστική εταιρεία διατηρεί ένα κατάστημα Redis για να παρακολουθεί τις τουριστικές πληροφορίες. Η δομή δεδομένων ροών Redis έχει χρησιμοποιηθεί για την αποθήκευση των πληροφοριών κάθε τουρίστα ως ζεύγη κλειδιού-τιμής. Με τον καιρό, η ροή μεγάλωσε και σχεδιάζουν να διατηρήσουν μόνο τις τελευταίες 1000 συμμετοχές. Έτσι έχουν προσδιορίσει το μέγιστο μήκος του ρεύματος πρέπει να είναι 1000 ανά πάσα στιγμή. Η εντολή XTRIM έχει χρησιμοποιηθεί για να επιτευχθεί αυτό.

Για λόγους επίδειξης, πρώτα, θα δημιουργήσουμε μια ροή με 10 καταχωρήσεις ως εξής. Η εντολή XADD έχει χρησιμοποιηθεί για την πραγματοποίηση της εισαγωγής.

xadd travelinfo * όνομα jack country ιταλία οικογενειακά 5
xadd travelinfo * όνομα Χάρι χώρα ΗΠΑ οικογενειακά δύο
xadd travelinfo * όνομα nikomita country ιαπωνική οικογένειαmems 3
xadd travelinfo * όνομα zakaria country india familymems δύο
xadd travelinfo * Ονομάστε τα μέλη της οικογένειας της χώρας Redmond της Βραζιλίας 6
xadd travelinfo * όνομα που βρέθηκε χώρα Ιαπωνία οικογενειακά 3
xadd travelinfo * όνομα maryjohn χώρα ΗΠΑ οικογενειάρχες δύο
xadd travelinfo * όνομα λίζα χώρα ιταλία οικογενειάρχες 5
xadd travelinfo * όνομα nimshikaa χώρα Ιαπωνίαοικογένεια 3
xadd travelinfo * όνομα nisha country ιταλία familymems 5

Ας χρησιμοποιήσουμε την εντολή XRANGE για να επιθεωρήσουμε το stream turistikinfo ως εξής.

xrange turistikinfo - +

Παραγωγή:

Όπως ήταν αναμενόμενο, οι 10 καταχωρήσεις ροής έχουν εμφανιστεί με αυτήν την εντολή.

Για λόγους επίδειξης, θα περικόψουμε το ρεύμα όπου το μέγιστο μήκος του θα είναι 5.

xtrim turistikinfo maxlen 5

Ας ελέγξουμε ξανά τις καταχωρήσεις ροής με την εντολή XRANGE.

Όπως ήταν αναμενόμενο, πέντε εισόδους έχουν αποβληθεί από το ρέμα και το μήκος του είναι 5.

Χρησιμοποιήστε την Περίπτωση 02 – Κατάργηση καταχωρίσεων ροής με βάση τα αναγνωριστικά ροής

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

Αρχικά, θα δημιουργήσουμε μια ροή που ονομάζεται weatherinfo και θα προσθέσουμε 5 καταχωρήσεις ως εξής.

xadd καιρικές πληροφορίες * θερμοκρασία 10 υγρασία πενήντα
xadd καιρικές πληροφορίες * θερμοκρασία είκοσι υγρασία 70
xadd καιρικές πληροφορίες * θερμοκρασία 12 υγρασία 65
xadd καιρικές πληροφορίες * θερμοκρασία δεκαπέντε υγρασία 88
xadd καιρικές πληροφορίες * θερμοκρασία 18 υγρασία Τέσσερα πέντε

Παραγωγή:

Ας χρησιμοποιήσουμε την εντολή XTRIM για να αφαιρέσουμε τις εγγραφές που έχουν αναγνωριστικά χαμηλότερα από την καθορισμένη τιμή κατωφλίου.

xtrim καιρικές πληροφορίες MINID 1660485503248 - 0

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

Παραγωγή:

Εφόσον δεν έχουμε καθορίσει ρητά τα ορίσματα = ή ~, η εντολή χρησιμοποιεί τον τελεστή = από προεπιλογή. Ως εκ τούτου, το ακριβές κούρεμα έχει γίνει και στις δύο περιπτώσεις χρήσης. Εάν έχετε ορίσει ρητά τον τελεστή ~, θα γίνει σχεδόν ακριβής περικοπή, όπως φαίνεται παρακάτω.

Όπως φαίνεται στο παραπάνω σχήμα, η εντολή XTRIM έχει χρησιμοποιηθεί με τον τελεστή ~. Ζητάμε από την εντολή να αφαιρέσει όλες τις καταχωρήσεις που υπερβαίνουν το μήκος των 100. Εφόσον δεν αναγκάζουμε την εντολή XTRIM να κάνει ακριβή περικοπή, θα επικεντρωθεί στην αποτελεσματικότητα της λειτουργίας περικοπής. Έτσι, δεν θα αφαιρέσει τις άμεσες εγγραφές που ανήκουν στον ίδιο μακρο-κόμβο. Θα διατηρήσει τις επόμενες τρεις εγγραφές που βρίσκονται στον ίδιο μακρο-κόμβο και θα αφαιρέσει όλους τους μακρο-κόμβους μετά από αυτούς. Προσφέρει σημαντική βελτίωση της απόδοσης σε σχέση με την προσέγγιση ακριβούς κοπής, η οποία αναγκάζει την εντολή να καταβάλει επιπλέον προσπάθεια. Η ίδια διαδικασία λαμβάνει χώρα όταν το όριο βασίζεται στα αναγνωριστικά εισόδου.

Το όρισμα LIMIT περιορίζει τον αριθμό των εξαγόμενων καταχωρήσεων από την καθορισμένη ροή, η οποία μπορεί να χρησιμοποιηθεί για να αποκτήσει λίγο περισσότερη βελτίωση απόδοσης.

συμπέρασμα

Εν ολίγοις, η εντολή XTRIM χρησιμοποιείται για την αφαίρεση καταχωρήσεων ροής με βάση μια τιμή κατωφλίου. Ο τύπος της τιμής κατωφλίου μπορεί να αλλάξει με το περιβάλλον που καθορίζεται χρησιμοποιώντας τα ορίσματα εντολών MAXLEN και MINID. Όπως συζητήθηκε, το κούρεμα μπορεί να γίνει με δύο τρόπους όπου η λειτουργία κοπής θα θεωρήσει το κατώφλι ως ακριβές ή κατά προσέγγιση όριο. Από προεπιλογή, η εντολή χρησιμοποιεί τον τελεστή = που χρησιμοποιείται για την ακριβή περικοπή. Με τον τελεστή ~, μπορείτε να κάνετε μια κατά προσέγγιση περικοπή όπως αναφέρεται στην παραπάνω ενότητα. Συνολικά, η προσέγγιση περικοπής κατά προσέγγιση και το όρισμα LIMIT σάς βοηθούν να αποκτήσετε σημαντικό κέρδος απόδοσης με την εντολή XTRIM.