Κοινή χρήση τεχνολογίας

Διαμόρφωση και βελτιστοποίηση Redis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Σχεσιακές βάσεις δεδομένων και μη σχεσιακές βάσεις δεδομένων

(1) Σχεσιακή βάση δεδομένων

Μια σχεσιακή βάση δεδομένων είναι μια δομημένη βάση δεδομένων, που δημιουργείται σε μια βάση δεδομένων σχεσιακού μοντέλου και δημιουργείται προσανατολισμένη στην εγγραφή.

Κοινές σχεσιακές βάσεις δεδομένων: Oracle, MySQL, SQL Server, Microsoft Access, DB2.

(2) Μη σχεσιακή βάση δεδομένων

NOSQL=Όχι μόνο SQL είναι ο γενικός όρος για μη σχεσιακές βάσεις δεδομένων. Ανάλογα με τη μέθοδο αποθήκευσης, τη δομή αποθήκευσης και τα σενάρια χρήσης, ονομάζεται μη σχεσιακή βάση δεδομένων. Οι βάσεις δεδομένων εκτός από τις κύριες σχεσιακές βάσεις δεδομένων μπορούν να ονομαστούν μη σχεσιακές βάσεις δεδομένων.

Κοινές μη σχεσιακές βάσεις δεδομένων: Redis, MongoDB, Hbase, CouhDB.

2. Βασικά στοιχεία του Redis

(1) Εισαγωγή στο Redis

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

(2) Πλεονεκτήματα του Redis

  1. Έχει υψηλή ταχύτητα ανάγνωσης και εγγραφής δεδομένων.
  2. Υποστηρίζει πλούσιους τύπους δεδομένων. κλειδί-τιμή, συμβολοσειρές, λίστες, κατακερματισμοί, σύνολα, διατεταγμένα σύνολα.
  3. Υποστήριξη επιμονής δεδομένων. Τα δεδομένα αποθηκεύονται στο δίσκο και μπορούν να φορτωθούν και να χρησιμοποιηθούν μετά την επανεκκίνηση.
  4. Ατομικός.
  5. Υποστήριξη δημιουργίας αντιγράφων ασφαλείας δεδομένων.

3. εγκατάσταση redis

1. Εγκαταστήστε το Redis

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y εγκατάσταση gcc* zlib-devel

[root@localhost ~]#tar xvzf redis-4.0.9.tar.gz

[root@localhost ~]#cd redis-4.0.9/

[root@localhost redis-4.0.9]# make

Ειδοποίηση:

Θα δημιουργηθεί ένα μήνυμα σφάλματος μετά τη δημιουργία,

λύση:
Λύση 1: Χρησιμοποιήστε make MALLOC=libc για να καθορίσετε τον εκχωρητή μνήμης που θα μεταγλωττιστεί για το libc
Λύση 2: Καθαρίστε & & Καθαρίστε Distclean

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd utils/
Μεταξύ αυτών: install_server.sh είναι το σενάριο προετοιμασίας

[root@localhost utils]# ./install_server.sh
Επιλέξτε την εκτελέσιμη διαδρομή redis [] /usr/local/redis/bin/redis-server(δώστε εκτελέσιμη διαδρομή)

Προβολή ελέγχου διεργασιών και υπηρεσιών
[root@localhost utils]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 5360/redis-server 1
[root@localhost utils]# /etc/init.d/redis_6379 stop(το redis είναι κλειστό)
[root@localhost utils]# /etc/init.d/redis_6379 start(επί)
[root@localhost utils]# /etc/init.d/redis_6379 status (κατάσταση)

Τροποποίηση των παραμέτρων διαμόρφωσης
[root@localhost ~]#vim /etc/redis/6379.conf
δεσμεύω 127.0.0.1 192.168.10.101//Διεύθυνση κεντρικού υπολογιστή ακρόασης
θύρα 6379 //Λιμάνι
δαιμονίζω ναι //Ενεργοποίηση διαδικασίας δαίμονα
pidfile /var/run/redis_6379.pid //Καθορισμός αρχείου PID
ειδοποίηση loglevel//επίπεδο καταγραφής
logfile /var/log/redis_6379.log//Καθορισμός αρχείου καταγραφής

[root@localhost~]#/etc/init.d/redis_6379 επανεκκίνηση

2.redis εργαλείο εντολών

[root@localhost utils]# redis-cli(Τοπική είσοδος)
[root@localhost utils]# redis-cli -h 192.168.10.101 -p 6379(απομακρυσμένη σύνδεση)
192.168.10.101:6379> ping(Η υπηρεσία εντοπισμού λειτουργεί κανονικά)
PONG

3: εργαλείο δοκιμών redis-benchmark

Το redis-benchmark είναι το επίσημο εργαλείο δοκιμών απόδοσης Redis που μπορεί να ελέγξει αποτελεσματικά την απόδοση των υπηρεσιών Redis.

  • -h: Καθορίστε το όνομα κεντρικού υπολογιστή διακομιστή.
  • -p: Καθορίστε τη θύρα διακομιστή.
  • -s: Καθορίστε την υποδοχή διακομιστή.
  • -γ: Καθορίστε τον αριθμό των ταυτόχρονων συνδέσεων.
  • -n: Καθορίστε τον αριθμό των αιτημάτων.
  • -d: Καθορίστε το μέγεθος δεδομένων της τιμής SET/GET σε byte.
  • -k:1=διατήρηση ζωής 0=επανασύνδεση;
  • -r: Το SET/GET/INCR χρησιμοποιεί τυχαία κλειδιά, το SADD χρησιμοποιεί τυχαίες τιμές.
  • -P: μεταφορά μέσω σωλήνα<numreq> παρακαλώ;
  • -q: Αναγκαστική έξοδος από το redis. Εμφανίζονται μόνο τιμές ερωτήματος/δευτ.
  • --csv: έξοδος σε μορφή CSV.
  • -l: Δημιουργήστε έναν βρόχο και εκτελέστε τη δοκιμή μόνιμα.
  • -t: Εκτέλεση μόνο μιας λίστας δοκιμαστικών εντολών διαχωρισμένων με κόμματα.
  • -I: Λειτουργία αδράνειας. Ανοίξτε μόνο N συνδέσεις αδράνειας και περιμένετε.
  • (1) Δοκιμή απόδοσης αιτήματος

    [root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

    Παρατήρηση:

    -h: Καθορίστε το όνομα κεντρικού υπολογιστή διακομιστή.

  • -p: Καθορίστε τη θύρα διακομιστή.

    -γ: Καθορίστε τον αριθμό των ταυτόχρονων συνδέσεων.

    -n: Καθορίστε τον αριθμό των αιτημάτων.

(2) Δοκιμή απόδοσης πρόσβασης

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Παρατήρηση:

-h: Καθορίστε το όνομα κεντρικού υπολογιστή διακομιστή.

-p: Καθορίστε τη θύρα διακομιστή.

-d: Καθορίστε το μέγεθος δεδομένων της τιμής SET/GET σε byte.

-q: Αναγκαστική έξοδος από το redis. Εμφανίζονται μόνο τιμές ερωτήματος/δευτ.

  1. 4. Κοινές εντολές για τη βάση δεδομένων Redis

το σύνολο αποθηκεύει τα δεδομένα μορφότυπος εντολής τιμή καθορισμού κλειδιού

λήψη Λήψη δεδομένων μορφή εντολής λήψη κλειδιού

(1) Εντολές που σχετίζονται με τα κλειδιά

1. Προσθέστε ζεύγη κλειδιών-τιμών

127.0.0.1:6379&gt; σύνολο 1 1
Εντάξει
127.0.0.1:6379&gt; σύνολο 2 2
Εντάξει
127.0.0.1:6379&gt; σύνολο 3 3
Εντάξει

2. Προβολή όλων των τιμών στη βάση δεδομένων

127.0.0.1:6379&gt; πλήκτρα *
1) "3"
2) "1"
3) "2"

3. Προβάλετε δεδομένα που ξεκινούν με v στη βάση δεδομένων
127.0.0.1:6379>KEYS v*

4. Προβάλετε τυχόν δεδομένα που ξεκινούν με v στη βάση δεδομένων

127.0.0.1:6379>KEYS v?

5.Προβολή της τρέχουσας βάσης δεδομένων με v αρχήΤο παρακάτω περιέχει οποιαδήποτε δύο ψηφία δεδομένων

127.0.0.1:6379>KEYS v??

(2) υπάρχει

Προσδιορίστε εάν η τιμή υπάρχει.

127.0.0.1:6379>υπάρχει f5Προσδιορίστε αν υπάρχει f5

(ακέραιος αριθμός) 1 Το αποτέλεσμα είναι 1, υποδεικνύοντας ότι υπάρχει το πλήκτρο f5

αρέσει

(ακέραιος) 0 Το αποτέλεσμα είναι 0, υποδεικνύοντας ότι το πλήκτρο f5 δεν υπάρχει

(3)δελ

del Η εντολή μπορεί να διαγράψει το καθορισμένο κλειδί

127.0.0.1:6379> del v5 Διαγραφή v5 στη βάση δεδομένων

(ακέραιος) 1

127.0.0.1:6379>λήψη v5

(μηδέν)

(4) τύπου

χρήση τύπος Η εντολή μπορεί να ληφθεί κλειδί αντίστοιχος αξία τύπος τιμής

127.0.0.1:6379>τύπου k1

σειρά

Παρατήρηση:

Τύποι δεδομένων που υποστηρίζονται από το redis

  • Συμβολοσειρά: Η συμβολοσειρά είναι ο απλούστερος τύπος, ο οποίος είναι συνηθισμένος σετ και λήψη, που χρησιμοποιείται για την προσωρινή αποθήκευση τιμών κλειδιού.
  • Κατακερματισμός: Αλγόριθμος κατακερματισμού, μια δομή παρόμοια με τον χάρτη Γενικά, τα δομημένα δεδομένα, όπως ένα αντικείμενο, μπορούν να αποθηκευτούν σε προσωρινή μνήμη.
  • Λίστα: Η λίστα είναι μια ταξινομημένη λίστα Μπορείτε να χρησιμοποιήσετε τη λίστα για να αποθηκεύσετε ορισμένες δομές δεδομένων τύπου λίστας, όπως λίστες θαυμαστών, λίστες σχολίων άρθρων κ.λπ.
  • Set: Το Set είναι μια μη ταξινομημένη συλλογή που αφαιρεί αυτόματα τα διπλότυπα.
  • Ταξινόμηση σετ: Ταξινομημένο σετ είναι ένα ταξινομημένο σύνολο, το οποίο αφαιρείται από τα αντίγραφα, αλλά μπορεί να ταξινομηθεί Κατά τη σύνταξη, δίνεται μια βαθμολογία και ταξινομείται αυτόματα σύμφωνα με τη βαθμολογία.

(5) μετονομασία

μετονομάζω Η εντολή είναι για ένα υπάρχον κλειδί μετονομάζω

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

127.0.0.1:6379>μετονομασία v22 v2 Μετονομάστε το v22 σε v2

Εντάξει

(6) μετονομασία

μετονομασία Η λειτουργία της εντολής είναι να τροποποιήσει την υπάρχουσα κλειδί Πραγματοποιήστε μια μετονομασία και ελέγξτε αν υπάρχει το νέο όνομα.

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

(7) dbs μέγεθος

dbsize Ο σκοπός της εντολής είναι η προβολή της τρέχουσας βάσης δεδομένων κλειδί Αριθμός των.

127.0.0.1:6379> dbsize

(ακέραιος αριθμός) 5

5. Κοινές εντολές για πολλαπλές βάσεις δεδομένων

(1) Εναλλαγή μεταξύ πολλαπλών βάσεων δεδομένων

Redis Περιλαμβάνεται από προεπιλογή χωρίς καμία αλλαγή 16 βάση δεδομένων, το όνομα της βάσης δεδομένων είναι ένας αριθμός 0-15 να ονομαστεί κατά σειρά

(1)Μετάβαση στον σειριακό αριθμό 10 βάση δεδομένων

127.0.0.1:6379>επιλέξτε 10

Εντάξει

(2)Μετάβαση στον σειριακό αριθμό 15 βάση δεδομένων

127.0.0.1:6379[10]>επιλέξτε 15

Εντάξει

(3)Μετάβαση στον σειριακό αριθμό 0 βάση δεδομένων

127.0.0.1:6379[15]>επιλέξτε 0

(2) Μετακίνηση δεδομένων μεταξύ πολλαπλών βάσεων δεδομένων

127.0.0.1:6379>σετ k1 100 Δημιουργία k1 στη βάση δεδομένων 0

Εντάξει

127.0.0.1:6379>πάρε k1

"100"

127.0.0.1:6379>κίνηση k1 1  //Μετακίνηση k1 στη βάση δεδομένων 0 στη βάση δεδομένων 1

(ακέραιος) 1

127.0.0.1:6379>επιλέξτε 1   //Μετάβαση στη βάση δεδομένων προορισμού 1

Εντάξει

127.0.0.1:6379[1]>πάρε k1   //Προβολή μεταφερθέντων δεδομένων

"100"

127.0.0.1:6379[1]> επιλέξτε 0

Εντάξει

127.0.0.1:6379> πάρε k1         //Η τιμή του k1 δεν μπορεί να προβληθεί στη βάση δεδομένων 0

(μηδέν)

(3) Διαγραφή δεδομένων στη βάση δεδομένων

Για να διαγράψετε τα τρέχοντα δεδομένα βάσης δεδομένων, χρησιμοποιήστε το FLUSHDB

Εφαρμογή εντολών, εκκαθάριση όλων των δεδομένων βάσης δεδομένων, χρήση FLUSHALL Εφαρμογή εντολών.

6. Redis επιμονή

Redis Όλα τα δεδομένα αποθηκεύονται στη μνήμη και στη συνέχεια αποθηκεύονται ασύγχρονα στο δίσκο από καιρό σε καιρό.(Αυτό ονομάζεταιΗμι-επίμονη λειτουργία”)Μπορείτε επίσης να γράψετε κάθε αλλαγή δεδομένων σε a προσάρτηση μόνο αρχείου(aof)σε(Αυτό ονομάζεταιΛειτουργία πλήρους επιμονής”)

επειδή Redis Όλα τα δεδομένα αποθηκεύονται στη μνήμη εάν δεν έχει ρυθμιστεί η εμμονή,Redis Μετά την επανεκκίνηση, όλα τα δεδομένα χάνονται.Επομένως, είναι απαραίτητο να ενεργοποιηθείRedis Η συνάρτηση επιμονής αποθηκεύει δεδομένα στο δίσκο Πότε Redis Μετά από μια επανεκκίνηση, τα δεδομένα μπορούν να ανακτηθούν από το δίσκο.Redis Δύο μέθοδοι παρέχονται για επιμονή, η μία είναι RDBΒάση Δεδομένων Redis Επιμονή (η αρχή είναι να ReidsΧρονική απόρριψη εγγραφών βάσης δεδομένων στη μνήμη (εγκαταλείπω)στον δίσκο RDB επιμονή), το άλλο είναι ΑΟΦπροσάρτηση μόνο αρχείοΕπιμονή (η αρχή είναι να Reids Το αρχείο καταγραφής λειτουργίας εγγράφεται στο αρχείο με συνημμένο τρόπο).

Η διαφορά μεταξύ RDB και AOF

Το ROB εγγράφει το στιγμιότυπο δεδομένων στο δίσκο εντός του καθορισμένου χρονικού διαστήματος. Είναι μια υποδιεργασία του fork.

Το AOF καταγράφει κάθε λειτουργία εγγραφής και διαγραφής του διακομιστή σε μορφή αρχείου καταγραφής. Οι λειτουργίες ερωτήματος δεν θα καταγράφονται, αλλά θα καταγράφονται σε μορφή κειμένου.

 

Πλεονεκτήματα και μειονεκτήματα RDB και AOF

Πλεονεκτήματα RDB:

Το RDB είναι ένα συμπαγές, συμπιεσμένο δυαδικό αρχείο που αντιπροσωπεύει ένα στιγμιότυπο δεδομένων Redis σε μια συγκεκριμένη χρονική στιγμή. Είναι πολύ κατάλληλο για backup, full copy και άλλα σενάρια. Για παράδειγμα, πραγματοποιήστε δημιουργία αντιγράφων ασφαλείας bgsave κάθε 6 ώρες και αντιγράψτε το αρχείο RDB στο απομακρυσμένο μηχάνημα ή στο σύστημα αρχείων για ανάκτηση από καταστροφή.

Η ανάκτηση δεδομένων είναι γρήγορη.

Μεγιστοποιήστε την απόδοση

Υψηλή απόδοση εκκίνησης

RDBέλλειψη:

Τα δεδομένα που δεν είχαν αποθηκευτεί πριν από τον τερματισμό λειτουργίας θα χαθούν.

       Το RDB ολοκληρώνεται μέσω της διαδικασίας fork child, καταναλώνοντας πόρους.

Πλεονεκτήματα AOF:

Η ανθεκτικότητα των δεδομένων είναι υψηλή

Στη λειτουργία προσάρτησης, τα περιεχόμενα του αρχείου καταγραφής δεν θα καταστραφούν ακόμη και αν υπάρχει χρόνος διακοπής λειτουργίας.

Ο μηχανισμός επανεγγραφής μπορεί να ξεκινήσει για την προστασία της ασφάλειας των δεδομένων.

Μειονεκτήματα AOF:

Η ταχύτητα ανάκτησης δεδομένων AOF είναι αργή

Η απόδοση λειτουργίας του AOF είναι χαμηλή

Κριτήρια επιλογής μεταξύ των δύο:

Θυσιάστε κάποια απόδοση σε αντάλλαγμα για υψηλότερη συνέπεια της κρυφής μνήμης (ΑΟΦ),

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

Παρατήρηση:

Εάν το redies χρειάζεται να φορτώσει ένα αρχείο persistence μετά την επανεκκίνηση,προτεραιότηταΘα επιλεγούν αρχεία AOF.

Εάν πρώτα ενεργοποιηθεί το RDB και μετά ενεργοποιηθεί το AOF και το RDB παραμείνει πρώτα, τα περιεχόμενα στο αρχείο RDB θα αντικατασταθούν από τον AOF.

7. Διαμόρφωση επιμονής Redis

(1) Διαμόρφωση επιμονής RDB

[root@localhost ~]# vim /etc/redis/6379.conf

Ανοιξε 6379.conf Μετά το αρχείο, κάντε αναζήτηση αποθηκεύσετε, μπορείτε να δείτε τις πληροφορίες διαμόρφωσης όπως φαίνεται παρακάτω.

  • αποθήκευση 900 1: Μετά από 900 δευτερόλεπτα (15 λεπτά), εάν αλλάξει τουλάχιστον 1 πλήκτρο, απορρίψτε το στιγμιότυπο μνήμης.
  • αποθήκευση 300 10: Μετά από 300 δευτερόλεπτα (5 λεπτά), εάν έχουν αλλάξει τουλάχιστον 10 πλήκτρα, απορρίψτε το στιγμιότυπο μνήμης.
  • αποθήκευση 60 10000: Μετά από 60 δευτερόλεπτα (1 λεπτό), εάν έχουν αλλάξει τουλάχιστον 10000 πλήκτρα, απορρίψτε το στιγμιότυπο μνήμης.
  • dbfilename dump.rdb: Όνομα αρχείου RDB ##254 γραμμή
  • dir /var/lib/redis/6379: Γραμμή διαδρομής αρχείου RDB ##264
  • rdbcompression ναι: Εάν θα συμπιεστεί η γραμμή ##242

(2) Διαμόρφωση επιμονής AOF

υπάρχει Redis Υπάρχουν τρεις μέθοδοι συγχρονισμού στο αρχείο διαμόρφωσης, είναι:

  • παράρτημα ναιΕνεργοποιήστε την επιμονή AOF (η προεπιλογή δεν είναι) γραμμή ##673
  • appendfilename "appendonly.aof " Όνομα αρχείου AOF ##677 γραμμή
  • # appendfsync πάντα
  • appendfsync κάθε δευτερόλεπτο
  • # appendfsync αρ

πάντα: σύγχρονη επιμονή, κάθε φορά που αλλάζουν δεδομένα, θα γράφονται αμέσως στον δίσκο ##702 γραμμή

everysec: Συνιστάται από προεπιλογή, εγγραφή ασύγχρονης κάθε δευτερόλεπτο (προεπιλεγμένη τιμή)

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

  • aof-load-truncated ναι ##769行

Αγνοήστε την τελευταία δυνητικά προβληματική οδηγία

[root@localhost ~]#/etc/init.d/redis_6379 επανεκκίνηση

8. Θέματα απόδοσης

(1) Προβολή πληροφοριών μνήμης

192.168.9.236:7001> μνήμη πληροφοριών

used_memory:1210776 Μέγεθος μνήμης που χρησιμοποιείται, σε byte
used_memory_human:1,15MΕμφανίζεται με μονάδες, σε Μ
used_memory_rss:7802880Πόση μνήμη καταλαμβάνει το redis από την πλευρά του λειτουργικού συστήματος;
used_memory_rss_human:7,44MΕμφάνιση με μονάδες
maxmemory:1073741824Μέγιστο μέγεθος μνήμης
maxmemory_human:1,00G Εμφάνιση με μονάδες

(2) Στρατηγική ανακύκλωσης

maxmemory-policy: Στρατηγική ανακύκλωσης

 πτητικό-lru: επιτρέπει Redis Επιλέξτε το λιγότερο πρόσφατα χρησιμοποιημένο από ολόκληρο το σύνολο δεδομένων κλειδί Διαγράφω

 πτητικό-ttlΑφαιρέστε ανάλογα με το χρόνο λήξης του κλειδιού 

 πτητικό-τυχαίο: Τυχαία επιλογή δεδομένων για εξάλειψη από τη συλλογή δεδομένων με καθορισμένο χρόνο λήξης.

 allkeys-lru:χρήση LRU Οι αλγόριθμοι εξαλείφουν δεδομένα από όλα τα σύνολα δεδομένων.

 όλα τα πλήκτρα-τυχαία: Τυχαία επιλογή δεδομένων για εξάλειψη από τη συλλογή δεδομένων.

 μηδενισμός: Απενεργοποίηση διαγραφής δεδομένων (προεπιλεγμένη τιμή)

Ρυθμίστε το χρόνο λήξης του κλειδιού

127.0.0.1:6379>λήγει v1 10 Το v1 έχει χρόνο λήξης 10 δευτερολέπτων

Παρατήρηση:

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