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

03-NoSQL Redis διαμόρφωση και βελτιστοποίηση

2024-07-12

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

1. Συνολική σύγκριση μεταξύ redis και memcache

1.Απόδοση

Redis: Χρησιμοποιεί μόνο έναν πυρήνα Κατά μέσο όρο, το Redis έχει υψηλότερη απόδοση από το Memcached κατά την αποθήκευση μικρών δεδομένων σε κάθε πυρήνα.

Memcached: Μπορείτε να χρησιμοποιήσετε πολλούς πυρήνες και σε δεδομένα άνω των 100k, η απόδοση του Memcached είναι υψηλότερη από το Redis.

2. Αποτελεσματικότητα χρήσης μνήμης

MemCached: Χρησιμοποιώντας απλή αποθήκευση κλειδιού-τιμής, το Memcached έχει υψηλότερη χρήση μνήμης.

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

3. Χώρος μνήμης και μέγεθος δεδομένων

MemCached: Η μέγιστη μνήμη μπορεί να τροποποιηθεί, χρησιμοποιώντας τον αλγόριθμο LRU. Το μέγεθος ενός κλειδιού-τιμής στο Memcached είναι περιορισμένο και μια τιμή υποστηρίζει το μέγιστο 1 MB.

Redis: Προσθέτει δυνατότητες VM και ξεπερνά τους περιορισμούς της φυσικής μνήμης. Το Redis υποστηρίζει μέγιστο μέγεθος κλειδιού-τιμής 512 MB.

4.Υποστήριξη δομής δεδομένων

MemCached: Ενιαία δομή δεδομένων, που χρησιμοποιείται μόνο για την προσωρινή αποθήκευση δεδομένων.

Redis: Υποστηρίζει πλουσιότερους τύπους δεδομένων Το Redis όχι μόνο υποστηρίζει απλά δεδομένα τύπου k/v, αλλά παρέχει επίσης αποθήκευση δομών δεδομένων όπως list, set, zset και hash.

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

5.Αξιοπιστία

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

Redis: έχει υψηλές απαιτήσεις αξιοπιστίας, υποστηρίζει τη διατήρηση δεδομένων και την ανάκτηση δεδομένων, επιτρέπει μεμονωμένα σημεία αστοχίας και επίσης επηρεάζει ορισμένες επιδόσεις. Υποστηρίζει δημιουργία αντιγράφων ασφαλείας δεδομένων, δηλαδή δημιουργία αντιγράφων ασφαλείας δεδομένων σε λειτουργία master-slave. Το Redis υποστηρίζει τη διατήρηση δεδομένων. Μπορεί να αποθηκεύσει δεδομένα στη μνήμη στο δίσκο και να τα φορτώσει ξανά για χρήση κατά την επανεκκίνηση.

6. Σενάρια εφαρμογής

Memcached: Μειώστε το φόρτο της βάσης δεδομένων και βελτιώστε την απόδοση σε δυναμικά συστήματα κρυφής μνήμης, κατάλληλη για σενάρια μεγαλύτερης ανάγνωσης, λιγότερης εγγραφής και μεγάλου όγκου δεδομένων.

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

2. Πειραματικές περιπτώσεις

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

Απενεργοποιήστε πρώτα το τείχος προστασίας

  1. 先把防火墙关掉
  2. systemctl stop firewalld
  3. set setenforce 0
  4. [root@localhost ~]# yum -y install gcc* zlib-devel
  5. 解压 redis包
  6. [root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
  7. [root@localhost ~]# cd redis-4.0.9/
  8.  make

  1. 2:查看进程
  2. [root@localhost utils]# netstat -anpt | grep redis

  1. 3:redis服务控制
  2. [root@localhost ~]#/etc/init.d/redis_6379 stop
  3. [root@localhost ~]#/etc/init.d/redis_6379 start
  4. [root@localhost ~]#/etc/init.d/redis_6379 restart
  5. [root@localhost ~]#/etc/init.d/redis_6379 status

  1. 4.配置参数的修改
  2. [root@localhost ~]#vim /etc/redis/6379.conf
  3. bind 127.0.0.1 192.168.10.101 //监听的主机地址
  4. port 6379 //端口
  5. daemonize yes //启用守护进程
  6. pidfile /var/run/redis_6379.pid //指定 PID 文件
  7. loglevel notice //日志级别
  8. logfile /var/log/redis_6379.log //指定日志文件
  9. [root@localhost~]#/etc/init.d/redis_6379 restart
  10. [root@localhost utils]# netstat -anpt | grep redis

  1. 二:Redis 命令工具
  2.  redis-server:用于启动 Redis 的工具;
  3.  redis-benchmark:用于检测 Redis 在本机的运行效率;
  4.  redis-check-aof:修复 AOF 持久化文件;
  5.  redis-check-rdb:修复 RDB 持久化文件;
  6.  redis-cli:Redis 命令行工具。

Συνήθεις εντολές redis:

σετ δημιουργία
δείτε
πλήκτρα * προβολή όλων
μετονομασία (θα αντικατασταθεί)
renamenx (ελέγξτε αν υπάρχει το ίδιο όνομα και, στη συνέχεια, αποφασίστε εάν θα εκτελέσετε την εντολή μετονομασίας,)
del (η εντολή μπορεί να διαγράψει το καθορισμένο κλειδί της τρέχουσας βάσης δεδομένων)
υπάρχει (η εντολή μπορεί να καθορίσει αν υπάρχει η βασική τιμή)
τύπου (χρησιμοποιήστε την εντολή type για να λάβετε τον τύπο τιμής που αντιστοιχεί στο κλειδί)
επιλογή (αλλαγή βάσης δεδομένων)
μετακίνηση (μετακίνηση δεδομένων)
flushdb (διαγραφή τρεχόντων δεδομένων βάσης δεδομένων)
flushall (διαγραφή όλων των δεδομένων βάσης δεδομένων)

  1.  -p:指定服务器端口;
  2.  -s:指定服务器 socket;
  3.  -c:指定并发连接数;
  4.  -n:指定请求数;
  5.  -d:以字节的形式指定 SET/GET 值的数据大小;
  6.  -k:1=keep alive 0=reconnect;
  7.  -r:SET/GET/INCR 使用随机 key, SADD 使用随机值;
  8.  -P:通过管道传输<numreq>请求;
  9.  -q:强制退出 redis。仅显示 query/sec 值;
  10.  --csv:以 CSV 格式输出;
  11.  -l:生成循环,永久执行测试;
  12.  -t:仅运行以逗号分隔的测试命令列表;
  13.  -I:Idle 模式。仅打开 N 个 idle 连接并等待。

Πέντε: Επιμονή Redis

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

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

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

(1) Τι είναι το RDB;

Η προεπιλεγμένη μέθοδος

Η επιμονή RDB είναι η διαδικασία δημιουργίας στιγμιότυπου των δεδομένων της τρέχουσας διεργασίας και αποθήκευσης στον σκληρό δίσκο Η διαδικασία ενεργοποίησης της επιμονής RDB χωρίζεται σε χειροκίνητη ενεργοποίηση και αυτόματη ενεργοποίηση.

Μηχανισμός ενεργοποίησης: Η χειροκίνητη ενεργοποίηση αντιστοιχεί στις εντολές αποθήκευσης και bgsave αντίστοιχα.

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

Εντολή bgsave: Η διεργασία Redis εκτελεί τη λειτουργία fork (συνάρτηση που χρησιμοποιείται για τη δημιουργία μιας διεργασίας) για τη δημιουργία μιας θυγατρικής διαδικασίας Η διαδικασία επιμονής RDB είναι υπεύθυνη για τη θυγατρική διαδικασία και τελειώνει αυτόματα μετά την ολοκλήρωση. Το μπλοκάρισμα συμβαίνει μόνο κατά τη φάση της περόνης.

(2) Πλεονεκτήματα και μειονεκτήματα του RDB:

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

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

Το Redis φορτώνει το RDB και ανακτά δεδομένα πολύ πιο γρήγορα από τη μέθοδο AOF.

Μειονεκτήματα του RDB:

Τα δεδομένα σε λειτουργία RDB δεν μπορούν να επιτύχουν εμμονή σε πραγματικό χρόνο/επιμονή δεύτερου επιπέδου. Επειδή κάθε φορά που εκτελείται το bgsave, εκτελείται μια λειτουργία διακλάδωσης για τη δημιουργία μιας θυγατρικής διαδικασίας, η οποία είναι μια βαριά λειτουργία και το κόστος της συχνής εκτέλεσης είναι πολύ υψηλό.

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

2. Τι είναι ο ΑΟΦ;

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

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

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

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

Παρατήρηση:

Εάν πρέπει να φορτωθεί ένα μόνιμο αρχείο μετά την επανεκκίνηση της επανεκκίνησης, θα επιλεγούν τα αρχεία AOF.

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

3: Διαμόρφωση επιμονής 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 λεπτό), εάν έχουν αλλάξει τουλάχιστον 10.000 πλήκτρα, απορρίψτε το στιγμιότυπο μνήμης.
  • dbfilename dump.rdb: Όνομα αρχείου RDB ##254 γραμμή
  • dir /var/lib/redis/6379: Γραμμή διαδρομής αρχείου RDB ##264
  • rdbcompression ναι: Εάν θα συμπιεστεί η γραμμή ##242

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

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

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

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

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

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

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

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

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

(2) Αναγραφή ΑΟΦ

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

127.0.0.1:6379&gt; bgrewriteaof

Ξεκίνησε η επανεγγραφή του αρχείου μόνο για την προσθήκη στο παρασκήνιο

# Όταν το αρχείο καταγραφής είναι BGREWRITEAOF,ανno-appendfsync-on-reriteΟρίστε σε ναι, πράγμα που σημαίνει ότι οι νέες λειτουργίες εγγραφής δεν θα συγχρονίζονται με το fsync, αλλά θα αποθηκευτούν μόνο προσωρινά στο buffer. , για να αποφύγετε διενέξεις λειτουργίας IO του δίσκου, περιμένετε μέχρι να ολοκληρωθεί η επανεγγραφή πριν γράψετε. Η προεπιλογή στο Redis είναι όχι

no-appendfsync-on-rerite no

# Όταν το τρέχον μέγεθος αρχείου AOF είναι διπλάσιο από το μέγεθος του αρχείου AOF κατά την τελευταία επανεγγραφή του αρχείου καταγραφής, εμφανίζεται η λειτουργία BGREWRITEAOF.

auto-aof-rewrite-ποσοστό 100

Παρατήρηση:

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

#Η ελάχιστη τιμή του τρέχοντος αρχείου AOF για την εκτέλεση της εντολής BGREWRITEAOF για την αποφυγή συχνών BGREWRITEAOF λόγω του μικρού μεγέθους του αρχείου κατά την πρώτη εκκίνηση του Reid.

auto-aof-rewrite-min-size 64mb

Έξι: Διαχείριση απόδοσης

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 Οι αλγόριθμοι εξαλείφουν δεδομένα από όλα τα σύνολα δεδομένων.

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

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

Παρατήρηση:

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

λήγει v1 10

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

Παρατήρηση:

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

redis ορίστε τον κωδικό πρόσβασης

1. Μέθοδος ρύθμισης

Μέθοδος 1: Ορίστε τον κωδικό πρόσβασης μέσω του αρχείου ρυθμίσεων redis.conf

Βρείτε τη λέξη-κλειδί requestpass, ακολουθούμενη από τον κωδικό πρόσβασης, σχολιάζεται από προεπιλογή, δηλαδή δεν απαιτείται κωδικός πρόσβασης από προεπιλογή, ως εξής:

  

 Ανοίξτε το σχόλιο, ορίστε το ως δικό σας κωδικό πρόσβασης και κάντε επανεκκίνηση

Μέθοδος 2: Ορίστε κωδικό πρόσβασης ονομάζοντας

Χρησιμοποιήστε το redis-cli για να συνδεθείτε με το redis και εκτελέστε την ακόλουθη εντολή

config set requirepass 123456

Μετά την ολοκλήρωση της εκτέλεσης, δεν υπάρχει ανάγκη επανεκκίνησης Θα χρειαστεί να εισαγάγετε τον κωδικό πρόσβασής σας όταν βγείτε από τον πελάτη και συνδεθείτε ξανά.

2. Μέθοδος σύνδεσης

1. Εισαγάγετε τον κωδικό πρόσβασης κατά τη σύνδεση

[root@localhost bin]# ./redis-cli -a 123456

2. Συνδεθείτε πρώτα και μετά πληκτρολογήστε τον κωδικό πρόσβασης

[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456

3. Μέθοδος κλεισίματος

[root@localhost bin]# ./redis-cli -a 123456 shutdown

4. Διαφορά

1) Ο κωδικός πρόσβασης που ορίστηκε με την τροποποίηση του αρχείου διαμόρφωσης θα τεθεί σε ισχύ μόνιμα ο κωδικός που ορίστηκε με τη χρήση της εντολής θα τεθεί σε ισχύ προσωρινά και θα καταστεί άκυρος μετά την επανεκκίνηση.

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

3) Η προτεραιότητα της εντολής είναι υψηλότερη από την προτεραιότητα του αρχείου διαμόρφωσης