Technologieaustausch

03-NoSQL Redis-Konfiguration und -Optimierung

2024-07-12

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

1. Gesamtvergleich zwischen Redis und Memcache

1.Leistung

Redis: Verwendet nur einen einzelnen Kern. Redis bietet im Durchschnitt eine höhere Leistung als Memcached, wenn auf jedem Kern kleine Daten gespeichert werden.

Memcached: Sie können mehrere Kerne verwenden und bei Daten von mehr als 100.000 ist die Leistung von Memcached höher als die von Redis.

2. Effizienz der Speichernutzung

MemCached: Durch die Verwendung einer einfachen Schlüsselwertspeicherung weist Memcached eine höhere Speicherauslastung auf.

Redis: Wenn eine Hash-Struktur für die Schlüsselwertspeicherung verwendet wird, ist ihre Speicherauslastung aufgrund der kombinierten Komprimierung höher als bei Memcached.

3. Speicherplatz und Datengröße

MemCached: Der maximale Speicher kann mithilfe des LRU-Algorithmus geändert werden. Die Größe eines einzelnen Schlüsselwerts in Memcached ist begrenzt und ein Wert unterstützt nur maximal 1 MB.

Redis: Fügt VM-Funktionen hinzu und durchbricht die Einschränkungen des physischen Speichers. Redis unterstützt eine maximale Einzelschlüsselwertgröße von 512 MB.

4. Unterstützung der Datenstruktur

MemCached: Einzelne Datenstruktur, die nur zum Zwischenspeichern von Daten verwendet wird.

Redis: Unterstützt umfangreichere Datentypen. Redis unterstützt nicht nur einfache Daten vom Typ k/v, sondern bietet auch die Speicherung von Datenstrukturen wie Liste, Satz, Zset und Hash.

Umfangreiche Datenoperationen können direkt auf der Serverseite durchgeführt werden, wodurch die E/A-Zeiten im Netzwerk und das Datenvolumen reduziert werden können.

5. Zuverlässigkeit

Memcached: Es handelt sich lediglich um einen Speichercache mit geringen Zuverlässigkeitsanforderungen. MemCached unterstützt keine Datenpersistenz. Die Daten verschwinden nach einem Stromausfall oder Neustart, die Stabilität ist jedoch gewährleistet.

Redis: stellt hohe Anforderungen an die Zuverlässigkeit, unterstützt Datenpersistenz und Datenwiederherstellung, ermöglicht einzelne Fehlerpunkte und wirkt sich auch auf die Leistung aus. Unterstützt die Datensicherung, also die Datensicherung im Master-Slave-Modus. Redis unterstützt die Datenpersistenz und kann Daten im Speicher auf der Festplatte speichern und zur Verwendung bei einem Neustart erneut laden.

6. Anwendungsszenarien

Memcached: Reduziert die Datenbanklast und verbessert die Leistung im dynamischen Systemcache; geeignet für mehr Lesevorgänge, weniger Schreibvorgänge und Szenarien mit großem Datenvolumen.

Redis: Geeignet für Systeme, die eine hohe Lese- und Schreibeffizienz, komplexe Datenverarbeitungsgeschäfte und hohe Sicherheitsanforderungen erfordern.

2. Experimentelle Fälle

1. Redis-Installation

Schalten Sie zunächst die Firewall aus

  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 命令行工具。

Allgemeine Redis-Befehle:

Set erstellen
Sicht bekommen
Schlüssel * Alle anzeigen
umbenennen (wird überschrieben)
renamenx (überprüfen Sie, ob derselbe Name vorhanden ist, und entscheiden Sie dann, ob der Umbenennungsbefehl ausgeführt werden soll.)
del (Befehl kann den angegebenen Schlüssel der aktuellen Datenbank löschen)
existiert (der Befehl kann feststellen, ob der Schlüsselwert existiert)
Typ (verwenden Sie den Typbefehl, um den dem Schlüssel entsprechenden Werttyp abzurufen)
auswählen (Datenbank wechseln)
verschieben (Daten verschieben)
Flushdb (aktuelle Datenbankdaten löschen)
Flushall (alle Datenbankdaten löschen)

  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 连接并等待。

Fünftens: Redis-Persistenz

Redis Alle Daten werden im Speicher gespeichert und dann von Zeit zu Zeit asynchron auf der Festplatte gespeichert.(Das nennt manSemi-persistenter Modus”); Sie können jede Datenänderung auch in eine schreiben nur Datei anhängen (aof)In(Das nennt manVollständiger Persistenzmodus”)

Weil Redis Alle Daten werden im Speicher gespeichert. Wenn die Persistenz nicht konfiguriert ist,Redis Nach dem Neustart gehen alle Daten verloren.Daher ist eine Aktivierung erforderlichRedis Die Persistenzfunktion speichert Daten auf der Festplatte Redis Nach einem Neustart können Daten von der Festplatte wiederhergestellt werden.Redis Für die Persistenz stehen zwei Methoden zur Verfügung, eine davon RDBRedis-Datenbank Beharrlichkeit (das Prinzip ist ReidsTiming der In-Memory-Datenbankprotokollierung entsorgen auf die Festplatte RDB Beharrlichkeit), das andere ist AOFnur Datei anhängenBeharrlichkeit (das Prinzip ist Reids Das Betriebsprotokoll wird als Anhang in die Datei geschrieben.

1: Der Unterschied zwischen RDB und AOF

(1) Was ist RDB?

Die Standardmethode

Bei der RDB-Persistenz wird ein Snapshot der aktuellen Prozessdaten erstellt und auf der Festplatte gespeichert. Der Prozess zum Auslösen der RDB-Persistenz ist in manuelles Auslösen und automatisches Auslösen unterteilt.

Auslösemechanismus: Die manuelle Auslösung entspricht den Befehlen save bzw. bgsave.

Speicherbefehl: Blockiert den aktuellen Redis-Server, bis der RDB-Prozess abgeschlossen ist. Bei Instanzen mit viel Speicher führt dies zu einer Zeitblockierung. Nicht für die Verwendung in Online-Umgebungen empfohlen.

bgsave-Befehl: Der Redis-Prozess führt die Fork-Operation (Funktion zum Erstellen eines Prozesses) aus, um einen untergeordneten Prozess zu erstellen. Der RDB-Persistenzprozess ist für den untergeordneten Prozess verantwortlich und endet automatisch nach Abschluss. Die Blockierung erfolgt nur während der Fork-Phase.

(2) Vor- und Nachteile von RDB:

Vorteile von RDB:

RDB ist eine kompakte, komprimierte Binärdatei, die eine Momentaufnahme der Redis-Daten zu einem bestimmten Zeitpunkt darstellt. Es eignet sich sehr gut für Backups, vollständige Kopien und andere Szenarien. Führen Sie beispielsweise alle 6 Stunden ein bgsave-Backup durch und kopieren Sie die RDB-Datei zur Notfallwiederherstellung auf den Remote-Computer oder das Dateisystem.

Redis lädt RDB und stellt Daten viel schneller wieder her als die AOF-Methode.

Nachteile von RDB:

Daten im RDB-Modus können keine Echtzeitpersistenz/Persistenz der zweiten Ebene erreichen. Denn jedes Mal, wenn bgsave ausgeführt wird, wird eine Fork-Operation ausgeführt, um einen untergeordneten Prozess zu erstellen. Dies ist eine schwere Operation und die Kosten für eine häufige Ausführung sind zu hoch.

RDB-Dateien werden in einem bestimmten Binärformat gespeichert. Während der Entwicklung von Redis-Versionen gibt es mehrere Formate von RDB-Versionen. Es besteht das Problem, dass die alte Version des Redis-Dienstes nicht mit der neuen Version des RDB-Formats kompatibel ist.

2. Was ist AOF?

AOF-Persistenz (nur Datei anhängen): Zeichnen Sie jeden Schreibbefehl in einem unabhängigen Protokoll auf und führen Sie den Befehl dann in der AOF-Datei erneut aus, um die Daten beim Neustart wiederherzustellen. Die Hauptfunktion von AOF besteht darin, das Echtzeitproblem der Datenpersistenz zu lösen. Dies ist heute der Mainstream der Redis-Persistenz.

Kriterien für die Wahl zwischen den beiden:

Opfern Sie etwas Leistung im Austausch für eine höhere Cache-Konsistenz (AOF),

Bei häufigen Schreibvorgängen sollten Sie die Sicherung nicht im Austausch für eine höhere Leistung aktivieren und auf den manuellen Vorgang warten. speichern Wenn, erstellen Sie erneut ein Backup (RDB

Anmerkung:

Wenn nach dem Neustart von Redies eine persistente Datei geladen werden muss, werden AOF-Dateien ausgewählt.

Wenn RDB zuerst und dann AOF aktiviert wird und RDB zuerst beibehalten wird, werden die Inhalte in der RDB-Datei von AOF überschrieben.

3: Redis-Persistenzkonfiguration

(1) RDB-Persistenzkonfiguration

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

Offen 6379.conf Suchen Sie nach der Datei speichern, können Sie die Konfigurationsinformationen wie unten gezeigt sehen.

  •  save 900 1: Wenn sich nach 900 Sekunden (15 Minuten) mindestens eine Taste ändert, wird der Speicherauszug gelöscht.
  •  save 300 10: Wenn sich nach 300 Sekunden (5 Minuten) mindestens 10 Schlüssel geändert haben, wird der Speicher-Snapshot gelöscht.
  •  save 60 10000: Wenn sich nach 60 Sekunden (1 Minute) mindestens 10000 Schlüssel geändert haben, wird der Speicher-Snapshot gelöscht.
  • dbfilename dump.rdb: RDB-Dateiname ##254 Zeile
  • dir /var/lib/redis/6379: RDB-Dateipfad ##264 Zeile
  • rdbcompression ja: Ob Zeile ##242 komprimiert werden soll

(2) AOF-Persistenzkonfiguration

existieren Redis Die Konfigurationsdatei enthält drei Synchronisierungsmethoden:

  • appendonly ja: AOF-Persistenz aktivieren (Standard ist nein) ##673 Zeile
  • appendfilename „appendonly.aof“: AOF-Dateiname ##677 Zeile
  • # appendfsync immer
  • appendfsync jede Sekunde
  • # appendfsync nein

Immer: Synchrone Persistenz. Jedes Mal, wenn sich Daten ändern, werden sie sofort auf die Festplatte geschrieben

everysec: Standardmäßig empfohlen, jede Sekunde asynchron aufzeichnen (Standardwert)

nein: Keine Synchronisierung, es bleibt dem Betriebssystem überlassen, zu entscheiden, wie synchronisiert wird

  • aof-load-truncated ja ##769 für

Ignorieren Sie die letzte möglicherweise problematische Anweisung

[root@localhost ~]#/etc/init.d/redis_6379 Neustart

(2) AOF-Umschreibung

Um es zu lösen AOF Wenn die Dateigröße weiter zunimmt, können Benutzer dies melden Redis schicken BGREWRITEAOFBefehl.BGREWRITEAOF Der Befehl wird über entfernt AOF redundante Befehle in der Datei, die überschrieben werden sollen (umschreibenAOFDatei, machen AOF Halten Sie die Dateigröße so klein wie möglich.

127.0.0.1:6379&gt; bgrewriteaof

Nur Anhängen im Hintergrund – Neuschreiben der Datei gestartet

# Wenn das Protokoll BGREWRITEAOF ist,Wennkein Anhängen von fsync beim NeuschreibenAuf „Ja“ setzen, was bedeutet, dass neue Schreibvorgänge nicht mit fsync synchronisiert, sondern nur vorübergehend im Puffer gespeichert werden. Um Konflikte bei Festplatten-E/A-Vorgängen zu vermeiden, warten Sie mit dem Schreiben, bis das Neuschreiben abgeschlossen ist. Der Standardwert in Redis ist „Nein“.

kein-appendfsync-on-rewrite nein

# Wenn die aktuelle AOF-Dateigröße doppelt so groß ist wie die AOF-Datei beim letzten Protokollumschreiben, wird der BGREWRITEAOF-Vorgang ausgeführt.

automatischer Aof-Umschreibprozentsatz 100

Anmerkung:

100Bezieht sichaofDas Dateiwachstumsverhältnis bezieht sich auf das Wachstumsverhältnis der aktuellen AOF-Datei im Vergleich zum letzten Neuschreiben.100ist das Doppelte

#Der Mindestwert der aktuellen AOF-Datei zum Ausführen des BGREWRITEAOF-Befehls, um häufiges BGREWRITEAOF aufgrund der geringen Dateigröße beim ersten Start von Reids zu vermeiden.

Auto-Aof-Rewrite – Mindestgröße 64 MB

Sechs: Leistungsmanagement

1: Speicherinformationen anzeigen

192.168.9.236:7001> Infospeicher

used_memory:1210776 #Die Größe des verwendeten Speichers,in Bytes
used_memory_human:1.15M # Anzeige mit Einheit,in M
used_memory_rss:7802880 # Wie viel Speicher belegt Redis aus Sicht des Betriebssystems?
used_memory_rss_human:7.44M # Anzeige mit Einheit
maxmemory:1073741824 # Maximale Speichergröße
maxmemory_human:1.00G # Anzeige mit Einheit

2: Recyclingstrategie

MaxMemory-Richtlinie: Recyclingstrategie

Ø flüchtig-lru: es erlaubt Redis Wählen Sie aus dem gesamten Datensatz den zuletzt verwendeten aus Schlüssel Löschen

Ø flüchtig-ttlentsprechendSchlüsselAblaufzeit für die Eliminierung

Ø flüchtig-zufällig: Wählen Sie nach dem Zufallsprinzip Daten zur Eliminierung aus der Datensammlung mit festgelegter Ablaufzeit aus;

Ø allkeys-lru:verwenden LRU Algorithmen eliminieren Daten aus allen Datensätzen;

Ø alle Tasten zufällig: Daten zur Eliminierung aus der Datensammlung zufällig auswählen;

Ø keine Räumung: Löschung von Daten deaktivieren (Standardwert)

Anmerkung:

Legen Sie die Ablaufzeit des Schlüssels fest

ablaufen v1 10

v1 hat eine Ablaufzeit von 10 Sekunden

Anmerkung:

Wann Redis Aufgrund von Speichermangel muss eines zurückgefordert werden Schlüssel Stunde,Redis Die erste Überlegung besteht darin, nicht die ältesten Daten zu recyceln, sondern die am längsten verwendeten Daten. Schlüssel oder bald ablaufen Schlüssel Wählen Sie zufällig eines aus Schlüssel, aus dem Datensatz entfernt

Redis Passwort festlegen

1. Einstellungsmethode

Methode 1: Legen Sie das Passwort über die Konfigurationsdatei redis.conf fest

Suchen Sie das Schlüsselwort requirepass, gefolgt vom Passwort. Es ist standardmäßig auskommentiert, d. h. es ist standardmäßig kein Passwort erforderlich, wie folgt:

  

 Öffnen Sie den Kommentar, legen Sie ihn als Ihr eigenes Passwort fest und starten Sie neu

Methode 2: Passwort durch Benennung festlegen

Verwenden Sie redis-cli, um eine Verbindung zu Redis herzustellen, und führen Sie den folgenden Befehl aus

config set requirepass 123456

Nach Abschluss der Ausführung ist kein Neustart erforderlich. Sie müssen Ihr Passwort eingeben, wenn Sie den Client verlassen und sich erneut anmelden.

2. Verbindungsmethode

1. Geben Sie beim Herstellen der Verbindung das Passwort ein

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

2. Stellen Sie zunächst eine Verbindung her und geben Sie dann das Passwort ein

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

3. Methode schließen

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

4. Unterschied

1) Das durch Ändern der Konfigurationsdatei festgelegte Passwort wird dauerhaft wirksam. Das mit dem Befehl festgelegte Passwort wird vorübergehend wirksam und wird nach dem Neustart ungültig.

2) Um das in der Konfigurationsdatei festgelegte Kennwort zu ändern, ist ein Neustart erforderlich. Verwenden Sie das durch den Befehl festgelegte Kennwort, damit es nach dem Abmelden und erneuten Anmelden wirksam wird. Nach dem Neustart wird es ungültig.

3) Die Priorität des Befehls ist höher als die Priorität der Konfigurationsdatei