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

Άποψη: 14227|Απάντηση: 1

[Ρέντις] Redis δύο μέθοδοι και αρχές εμμονής

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 24/8/2017 4:37:45 μ.μ. | | |
Το Redis είναι μια προηγμένη βάση δεδομένων κλειδιών-τιμών. Είναι παρόμοιο με το memcached, αλλά τα δεδομένα μπορούν να διατηρηθούν και οι τύποι δεδομένων είναι πλούσιοι. Υπάρχουν συμβολοσειρές, συνδεδεμένες λίστες, σύνολα και ταξινομημένες συλλογές. Υποστηρίζει τον υπολογισμό της άθροισης, της τομής και της συμπλήρωσης (διαφοράς) των συλλογών από την πλευρά του διακομιστή και υποστηρίζει επίσης μια ποικιλία λειτουργιών ταξινόμησης. Έτσι, το Redis μπορεί επίσης να θεωρηθεί ως διακομιστής δομής δεδομένων.
    Όλα τα δεδομένα Redis αποθηκεύονται στη μνήμη και στη συνέχεια αποθηκεύονται στο δίσκο ασύγχρονα από καιρό σε καιρό (αυτό ονομάζεται "ημι-μόνιμη λειτουργία"). Μπορείτε επίσης να γράψετε κάθε αλλαγή δεδομένων σε ένα αρχείο προσάρτησης μόνο (AOF) (αυτό ονομάζεται "λειτουργία πλήρους επιμονής").
Η πρώτη μέθοδος είναι το filesnapshotting: Το προεπιλεγμένο redis θα διατηρήσει τα δεδομένα στο δίσκο με τη μορφή στιγμιότυπου (ένα δυαδικό αρχείο, dump.rdb, αυτό το όνομα αρχείου μπορεί να καθοριστεί) και η μορφή στο αρχείο διαμόρφωσης είναι: αποθήκευση N M σημαίνει ότι μέσα σε N δευτερόλεπτα, το redis θα μεταφέρει ένα στιγμιότυπο στο δίσκο εάν συμβούν τουλάχιστον M τροποποιήσεις στο redis. Φυσικά, μπορούμε επίσης να εκτελέσουμε χειροκίνητα αποθήκευση ή bgsave (ασύγχρονη) για λήψη στιγμιότυπων.

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

Υπάρχει επίσης μια μέθοδος επιμονής Μέθοδος Append-only:filesnapshotting Όταν το redis είναι ασυνήθιστα νεκρό, τα πρόσφατα δεδομένα θα χαθούν (ο όγκος των χαμένων δεδομένων εξαρτάται από τη διαμόρφωση της πολιτικής αποθήκευσης), επομένως αυτό είναι το μεγαλύτερο μειονέκτημά του, όταν ο όγκος της επιχείρησης είναι μεγάλος, τα χαμένα δεδομένα είναι πολλά. Η μέθοδος μόνο προσάρτησης μπορεί να επιτύχει όλη την απώλεια δεδομένων, αλλά η απόδοση του redis είναι χειρότερη. Το AOF μπορεί να διατηρηθεί καθ' όλη τη διάρκεια της διαδικασίας, χρειάζεται μόνο να ενεργοποιηθεί στο αρχείο διαμόρφωσης (η προεπιλογή είναι όχι), προσάρτημα μόνο ναι Αφού ενεργοποιηθεί το AOF, κάθε φορά που το redis εκτελεί μια εντολή για την τροποποίηση δεδομένων, θα προστίθεται στο αρχείο aof και όταν γίνεται επανεκκίνηση του redis, το αρχείο AOF θα διαβαστεί για "επανάληψη" για επαναφορά μέχρι την τελευταία στιγμή πριν κλείσει το redis.

Επανεγγραφή αρχείου καταγραφής Καθώς το αρχείο AOF γίνεται όλο και μεγαλύτερο καθώς τροποποιούνται τα δεδομένα, πολλά από τα οποία καταγράφουν αλλαγές σε ένα κλειδί. Επομένως, το redis έχει ένα ενδιαφέρον χαρακτηριστικό: ανακατασκευάστε το αρχείο AOF στο παρασκήνιο χωρίς να επηρεαστεί η λειτουργία από την πλευρά του πελάτη. Η εκτέλεση της εντολής BGREWRITEAOF ανά πάσα στιγμή θα γράψει τη συντομότερη ακολουθία εντολών στην τρέχουσα μνήμη στο δίσκο και αυτές οι εντολές μπορούν να κατασκευάσουν πλήρως την τρέχουσα κατάσταση δεδομένων χωρίς περιττές αλλαγές (όπως αλλαγές κατάστασης, αλλαγές μετρητή κ.λπ.), μειώνοντας το μέγεθος του αρχείου AOF. Επομένως, όταν χρησιμοποιείτε το OF, το redis συνιστά τη χρήση και του BGREWRITEAOF.

Υπάρχουν τρεις τρόποι για να ανανεώσετε το αρχείο AOF, ανατρέξτε στην παράμετρο διαμόρφωσης appendfsync: το appendfsync καλεί πάντα το fsync για να ξεπλυθεί στο αρχείο AOF κάθε φορά που υποβάλλεται μια εντολή τροποποίησης, η οποία είναι πολύ, πολύ αργή, αλλά και πολύ ασφαλής. Το appendfsync everysec καλεί το fsync κάθε δευτερόλεπτο για να ξεπλυθεί στο αρχείο AOF, γρήγορα, αλλά μπορεί να χάσει δεδομένα μέσα σε ένα δευτερόλεπτο. Το appendfsync δεν βασίζεται στο λειτουργικό σύστημα για ανανέωση, το redis δεν ανανεώνει ενεργά το OV, το οποίο είναι το πιο γρήγορο, αλλά η ασφάλεια είναι κακή. Η ανανέωση ανά δευτερόλεπτο συνιστάται από προεπιλογή, έτσι ώστε να λαμβάνονται υπόψη τόσο η ταχύτητα όσο και η ασφάλεια.

Μπορεί να οφείλεται σε λόγους συστήματος που το AOF είναι κατεστραμμένο, το redis δεν μπορεί πλέον να φορτώσει αυτό το OF OV, μπορείτε να ακολουθήσετε τα παρακάτω βήματα για να το διορθώσετε: Πρώτα, δημιουργήστε ένα αντίγραφο ασφαλείας του αρχείου AOF και αντιγράψτε το σε άλλο μέρος. Διορθώστε το αρχικό αρχείο OF, εκτελέστε: $redis-check-aof –fix; Μπορείτε να χρησιμοποιήσετε την εντολή diff –u για να δείτε πού είναι ασυνεπή τα αρχεία πριν και μετά την επισκευή. Επανεκκινήστε την υπηρεσία Redis.

Πώς λειτουργεί το LOG Rewrite: Το ίδιο χρησιμοποιεί το copy-on-write: το first redis θα διαχωρίσει μια θυγατρική διαδικασία. Η θυγατρική διεργασία εγγράφει το πιο πρόσφατο AOF σε ένα προσωρινό αρχείο. Η γονική διεργασία γράφει σταδιακά τις τελευταίες εκτελεσμένες αλλαγές στη μνήμη (αυτή τη στιγμή, το παλιό AOF εξακολουθεί να είναι γραμμένο και είναι ασφαλές να ξαναγραφτεί εάν αποτύχει). Όταν η θυγατρική διεργασία ολοκληρώσει την επανεγγραφή του προσωρινού αρχείου, η γονική διεργασία λαμβάνει ένα σήμα και εγγράφει τις προηγούμενες σταδιακές αλλαγές στη μνήμη στο τέλος του προσωρινού αρχείου. Το Redis μετονομάζει το παλιό αρχείο OF, μετονομάζει το προσωρινό αρχείο και αρχίζει να γράφει στο νέο OF.

Τέλος, για κάθε περίπτωση (σφάλματα μηχανήματος ή σφάλματα δίσκου), θυμηθείτε να δημιουργείτε τακτικά αντίγραφα ασφαλείας του αρχείου *rdb *.aof που δημιουργείται χρησιμοποιώντας filesnapshotting ή Append-only στο απομακρυσμένο μηχάνημα. Χρησιμοποιώ ένα crontab για SCP κάθε μισή ώρα. Δεν χρησιμοποίησα τη λειτουργία master-slave του redis, γιατί ένα αντίγραφο ασφαλείας μισής ώρας θα πρέπει να είναι εντάξει και νιώθω ότι είναι λίγο σπατάλη του μηχανήματος αν έχετε έναν master-slave. Αυτό εξαρτάται τελικά από την εφαρμογή.




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

Mail To:help@itsvse.com