Dieser Artikel vermittelt Ihnen relevantes Wissen über Redis, in dem hauptsächlich die damit verbundenen Probleme zu Clustern vorgestellt werden und der Inhalt des Master-Slave-Modus im Detail besprochen wird, einschließlich aller Master-Slave-Cluster usw. Werfen wir einen Blick darauf zusammen, ich hoffe, es hilft allen.
Empfohlenes Lernen: Redis-Video-Tutorial
1. Warum brauchen Sie einen Cluster?
In unserer tatsächlichen Entwicklung Es ist aus folgenden Gründen nicht möglich, nur einen Redis in Engineering-Projekten zu verwenden:
Einführung Derzeit verfügt Redis über drei Cluster-Modi, nämlich:(1) Aus der Struktur wird ein einzelner Redis-Server entstehen Single Point of Failure, und ein Server muss alle Anforderungslasten bewältigen,
(2) Von derKapazität ist die Kapazität eines einzelnen Redis-Servers begrenzt, selbst ein Redis-Server Die Speicherkapazität beträgt 256 GB, und der gesamte Speicher kann nicht als Redis-Speicher verwendet werden. Im Allgemeinen sollte der von einem einzelnen Redis verwendete maximale Speicher 20 GB nicht überschreiten. (3) Die
Lese- und Schreibleistung eines einzelnen Redis-Servers ist begrenztDie Verwendung eines Clusters kann die Lese- und Schreibfähigkeiten verbessern. 2. Master-Slave-Modus
Master-Slave-Modus, Sentinel-Modus, Cluster-Modus; der Master-Slave-Modus ist der einfachste davon Drei Modi: Bei der „Master-Slave-Replikation“ handelt es sich um das Kopieren von Daten von einem Redis-Server auf andere Redis-Server. Ersterer wird als Master-Knoten (Master/Leader) und letzterer als Slave-Knoten (Slave/Follower) bezeichnet. Hinweis:
(1)Die Datenreplikation erfolgt in eine Richtung, nur vom Master-Knoten zum Slave-Knoten.
Master dient hauptsächlich zum Schreiben und Slave hauptsächlich zum Lesen.Datenredundanz(2)Standardmäßig ist jeder Redis-Server ein Master-Knoten; (3)Ein Master-Knoten kann mehrere Slave-Knoten haben (oder keine Slave-Knoten), aber Ein Slave-Knoten kann nur vorhanden sein ein Masterknoten
.
Funktion1.
: Die Master-Slave-Replikation implementiert eine Hot-Sicherung von Daten, eine Datenredundanzmethode zusätzlich zur Persistenz.
Master-Slave-Replikation für die Lese-Schreib-Trennung: Wenn auf dem Master-Knoten ein Problem auftritt, kann der Slave-Knoten Dienste bereitstellen, um eine schnelle Fehlerbehebung zu erreichen. 3. Eckpfeiler der Hochverfügbarkeit (Cluster)
: Die Master-Slave-Replikation ist auch die Grundlage für die Implementierung von Sentinels und Clustern. Daher ist die Master-Slave-Replikation die Grundlage der Redis-Hochverfügbarkeit. 4. Lastausgleich
: Basierend auf der Master-Slave-Replikation in Kombination mit der Lese-Schreib-Trennung kann der Master-Knoten Schreibdienste bereitstellen und die Slave-Knoten können Lesedienste bereitstellen (d. h. beim Schreiben von Redis-Daten die Anwendung). stellt eine Verbindung zum Master-Knoten her und liest Redis. Wenn Daten generiert werden, verbindet die Anwendung Slave-Knoten, um die Serverlast zu teilen, insbesondere in Szenarien, in denen weniger geschrieben und mehr gelesen wird, kann die Aufteilung der Leselast durch mehrere Slave-Knoten die Parallelität erheblich erhöhen des Redis-Servers. Auf unserer E-Commerce-Website finden Sie beispielsweise, dass ein Produkt nur einmal hochgeladen werden muss, es aber von Benutzern mehrmals angezeigt werden kann
, also „Weniger schreiben und mehr lesen.“ ", wir Sie können
verwenden, um den Druck auf den Server zu reduzieren: ) und benennen Sie sie um in: redis79.conf , redis80.conf, redis81.conf. 2. Ändern Sie die Konfigurationsdatei (1) Ändern Sie Ändern Sie die Portnummer e Auf die Ausführung im Hintergrund einstellen 3. Erstellen Sie den Master-Slave-Cluster
1. Kopieren Sie die drei Konfigurationsdateien (ursprünglicher Name:
redis.confport 6379
Legen Sie den Namen der Protokolldatei fest.
daemonize:yes
Ändern Sie die Portnummer
logfile “6379.log"
Auf Ausführung im Hintergrund einstellen
dbfilename dump6379.rdb
Legen Sie den Namen der Aufzeichnungsprozess-ID fest
port 6380
Legen Sie den Namen der Protokolldatei fest
daemonize:yes
Stellen Sie die ein DB-Dateiname
pidfile /var/run/redis_6380.pid
(3) Ändern Sie redis81.conf
Ändern Sie die Portnummer
logfile “6380.log"
Auf Ausführung im Hintergrund einstellen
dbfilename dump6380.rdb
Legen Sie den Namen der Aufzeichnungsprozess-ID-Datei fest
pid (Port-ID): Die ID des Prozesses wird aufgezeichnet und die Datei ist gesperrt. Verhindert, dass das Programm mehrmals gestartet wird. Protokolldatei: Speicherort der Protokolldatei löschen
DB-Dateiname: dumpxxx.file #Persistenter DateispeicherortPort: Die vom Prozess belegte Portnummer
3.2. Erstellen Sie einen Master und zwei Slaves
Starten Sie den Redis-ServerHinweis
: Standardmäßig ist jeder Reids-Server der Masterknoten. Wenn wir einen Master-Slave-Server erstellen möchten, müssen wir ihn nur auf dem Slave-Computer erstellen.
Jetzt starten Sie die Serverredis79
,Öffnen Sie drei Client-Fenster und bedienen Sie jeweils drei Redis-Server.redis80,
redis81.port 6381
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob der Start erfolgreich war:daemonize:yes
Geben Sie den Befehl ein:
Beachten Sie, dass Sie den Port angeben müssen, um zu wissen, welche Redis wir öffnen möchten.
Fenster eins:pidfile /var/run/redis_6381.pid
Fenster zwei:logfile “6381.log"
Fenster drei:dbfilename dump6381.rdb
Legen Sie die Master-Slave-Beziehung fest redis80 und redis81 ist als Slave-Knoten festgelegt.
Das Konfigurieren der IP-Adresse und der Portnummer des Hosts ist gleichbedeutend damit, ihn als Ihren Chef erkennen zu wollen.
redis80:redis-server redis79.conf redis-server redis80.conf redis-server redis81.conf
redis81:
#SLAVEOF IP地址 端口 127.0.0.1:6381> slaveof 127.0.0.1 6379 OK
这个时候,我们在从机使用INFO命令就可以查看主从关系了:
info replication
而此时我们去主机redis79中使用同样的命令进行查看:
现在我们的一主二从的关系就成功搭建好了!
提示:如果要将从机变成主机,我们只需要在从机执行以下命令,即可让自己变为主机。
SLAVEOF no one
四、知识讲解
知识一
主机可以进行读写操作,而从机只能读操作。
注意:主机中的所有信息和数据,都会自动被从机保存。
主机:
127.0.0.1:6379> set key1 v1 OK 127.0.0.1:6379> get key1 "v1"
从机:
127.0.0.1:6380> get key1 "v1" 127.0.0.1:6380> set key2 v2 #进行写操作就会报错,提示从机只能进行读操作 (error) READONLY You can't write against a read only replica.
知识二
主机如果宕机了,从机依旧可以读取到主机宕机前的数据,但仍然没有写操作,如果主机恢复过来了,从机依旧可以获取到主机写的数据。
(1)停止主机进程(演示主机宕机了)
停止进程的命令:
kill -9 pid #pid为redis进程号
(2)从机获取宕机前主机写入的数据
可以发现,能够顺利拿到,但仍然是无法进行写操作的。
(3)恢复主机
redis-server redis79.conf
(4)主机重新写入数据,从机获取最新数据。
主机写入数据:
127.0.0.1:6379> set k2 yixin OK
从机读取最新数据:
127.0.0.1:6380> get k2 "yixin"
知识三
两种配置方式下的从机断开情况
a、命令行设置主从关系
从机断开了,其重新连接后变为主机,能拿到断开之前的数据,但拿不到主机新写入的值,如果重新设置主从关系,就可以拿到主机全部的数据了。
(1)停止从机进程。
(2)主机写入新数据。
127.0.0.1:6379> set k3 new OK
(3)重新启动从机服务器。
redis-server redis80.conf
(4)尝试获取从机宕机前主机写入的数据,发现可以拿到。
127.0.0.1:6380> get k1 "v1"
(5)尝试获取从机宕机期间主机写入的数据,发现无法拿到了。
127.0.0.1:6380> get k3 (nil)
此次我们可以进行查看主从关系,由于是命令行配置的,所以重启之后又变回主机了。
127.0.0.1:6380> info replication # Replication role:master connected_slaves:0
(6)如果要拿到主机的所有数据,只要执行以下命令重新配置主从关系就可以了。
slaveof 127.0.0.1 6379
b、配置文件设置的主从关系
从机断开后,重新连接,也是可以拿到主机的全部数据的。
(1)修改配置文件redis80.conf,添加主从关系。
#指定主机的ip与port slaveof 127.0.0.1 6379
(2)主机添加新数据
127.0.0.1:6379> set k5 hello OK
(3)重新启动redis80服务器。
redis-server redis80.conf
(4)获取从机宕机期间主机新写入的数据,发现现在可以顺利拿到了。
127.0.0.1:6380> get k5 "hello"
我们来查看6380的主从关系,可以发现在重启的时候就已经设置好主从关系了。
五、复制原理
(1)Slave 启动成功连接到 Master 后会发送一个sync同步命令
(2)Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。
(3)全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
(4)增量复制:Master 继续将新的所有收集到的修改命令依次传给slave,完成同步。
注意:只要是重新连接master,一次完全同步(全量复制)将被自动执行! 我们的数据一定可以在从机中看到。
六、主从模式的优缺点
优点
(1)同一个Master可以同步多个Slaves。
(2)Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。因此我们可以将Redis的Replication架构视为图结构。
(3)Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。
(4)Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
(5)为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。即便如此,系统的伸缩性还是得到了很大的提高。
(6)Master可以将数据保存操作交给Slaves完成,从而避免了在Master中要有独立的进程来完成此操作。
(7)支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
缺点
(1) Redis 主从模式不具备自动容错和恢复功能,如果主节点宕机,Redis 集群将无法工作,此时需要人为干预,将从节点提升为主节点。
(2) 如果主机宕机前有一部分数据未能及时同步到从机,即使切换主机后也会造成数据不一致的问题,从而降低了系统的可用性。
(3) 因为只有一个主节点,所以其写入能力和存储能力都受到一定程度地限制。
(4) 在进行数据全量同步时,若同步的数据量较大可能会造卡顿的现象。
推荐学习:Redis视频教程
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Redis-Cluster-Master-Slave-Modus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Die Kernfunktion von Redis ist ein Hochleistungs-In-Memory-Datenspeicher- und Verarbeitungssystem. 1) Hochgeschwindigkeitsdatenzugriff: Redis speichert Daten im Speicher und bietet Lese- und Schreibgeschwindigkeit auf Mikrosekunden. 2) Reiche Datenstruktur: Unterstützt Zeichenfolgen, Listen, Sammlungen usw. und passt an eine Vielzahl von Anwendungsszenarien. 3) Persistenz: Behalten Sie Daten an, um durch RDB und AOF zu diskutieren. 4) Abonnement veröffentlichen: Kann in Nachrichtenwarteschlangen oder Echtzeit-Kommunikationssystemen verwendet werden.

Redis unterstützt eine Vielzahl von Datenstrukturen, darunter: 1. String, geeignet zum Speichern von Einzelwertdaten; 2. Liste, geeignet für Warteschlangen und Stapel; 3.. SET, verwendet zum Speichern nicht duplikatischer Daten; V. 5. Hash -Tabelle, geeignet zum Speichern von Objekten oder strukturierten Daten.

Der Redis-Zähler ist ein Mechanismus, der die Speicherung von Redis-Schlüsselwertpaaren verwendet, um Zählvorgänge zu implementieren, einschließlich der folgenden Schritte: Erstellen von Zählerschlüssel, Erhöhung der Zählungen, Verringerung der Anzahl, Zurücksetzen der Zählungen und Erhalt von Zählungen. Die Vorteile von Redis -Zählern umfassen schnelle Geschwindigkeit, hohe Parallelität, Haltbarkeit und Einfachheit und Benutzerfreundlichkeit. Es kann in Szenarien wie Benutzerzugriffszählungen, Echtzeit-Metrikverfolgung, Spielergebnissen und Ranglisten sowie Auftragsverarbeitungszählung verwendet werden.

Verwenden Sie das Redis-Befehlszeilen-Tool (REDIS-CLI), um Redis in folgenden Schritten zu verwalten und zu betreiben: Stellen Sie die Adresse und den Port an, um die Adresse und den Port zu stellen. Senden Sie Befehle mit dem Befehlsnamen und den Parametern an den Server. Verwenden Sie den Befehl Hilfe, um Hilfeinformationen für einen bestimmten Befehl anzuzeigen. Verwenden Sie den Befehl zum Beenden, um das Befehlszeilenwerkzeug zu beenden.

Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.

Verwendung von ZSET in Redis -Cluster: ZSET ist eine geordnete Sammlung, die Elemente mit Punktzahlen assoziiert. Sharding -Strategie: a. Hash Sharding: Verteilt den Hash -Wert gemäß dem ZSet -Schlüssel. B. Reichweite Sharding: Unterteilen Sie in Bereiche gemäß den Elementzahlen und weisen Sie jedem Bereich verschiedenen Knoten zu. Operationen lesen und schreiben: a. Operationen lesen: Wenn der Zset -Schlüssel zum Shard des aktuellen Knotens gehört, wird er lokal verarbeitet. Andernfalls wird es an den entsprechenden Shard weitergeleitet. B. Schreibvorgang: Immer in Scherben, die den Zset -Schlüssel halten.

So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.