Heim > Backend-Entwicklung > PHP-Tutorial > Beginnen Sie mit dem Redis-Cache von Grund auf

Beginnen Sie mit dem Redis-Cache von Grund auf

不言
Freigeben: 2023-03-29 16:06:02
Original
1746 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich vor, wie man den Redis-Cache von Grund auf neu startet. Er hat einen gewissen Referenzwert. Jetzt kann ich ihn mit allen teilen, die ihn brauchen.

  1. Einführung in Redis

Redis ist eine Open-Source-Sprache, die ANSI CSpracheSchreiben und unterstützen Sie Netzwerk, Protokolltyp, SchlüsselwertDatenbank , die speicherbasiert oder dauerhaft sein kann und mehrere Sprachen bietet API. Ab 2010Jahr3Monat15Tag, Die Entwicklung von Redis wird von VMware gehostet. Ab 2013 Jahr 5 Monat wurde Redis von entwickelt PivotalGesponsert.

redis ist ein SchlüsselwertSpeichersystem . Ähnlich wie Memcached unterstützt es relativ mehr gespeicherte Werttypen, einschließlich string( String), list(List), set(set), zset(sorted set --ordered set ) und Hash (Hash-Typ). Diese Datentypen unterstützen alle Push/Pop, Hinzufügen/Entfernen und Abrufen Schnitt-, Vereinigungs- und Differenzoperationen sowie umfangreichere Operationen, und diese Operationen sind alle atomar. Auf dieser Basis unterstützt redis verschiedene Sortiermethoden. Wie bei memcached werden Daten zur Gewährleistung der Effizienz im Speicher zwischengespeichert. Der Unterschied besteht darin, dass redis regelmäßig aktualisierte Daten auf die Festplatte schreibt oder Änderungsvorgänge in zusätzliche Datensatzdateien schreibt und auf dieser Basis Master-Slave(Master-Slave) Synchronisation.

Redis ist eine leistungsstarke Schlüssel-Wert--Datenbank. Das Aufkommen von Redis hat memcachedwie Schlüssel/WertUnzureichend weitgehend kompensiert In manchen -Situationen kann die Speicherung eine sehr gute ergänzende Rolle zur relationalen Datenbank spielen. Es bietet Java, C/C++, C#, PHP, JavaScript, Perl, Object-C , Python, Ruby, Erlang und andere Kunden, Very einfach zu bedienen. [1]

Redis unterstützt Master-Slave-Synchronisation. Daten können vom Master-Server mit einer beliebigen Anzahl von Slave-Servern synchronisiert werden, und der Slave-Server kann ein Master-Server sein, der mit anderen Slave-Servern verbunden ist. Dadurch kann Redis eine einstufige Baumreplikation durchführen. Beim Speichern können Daten absichtlich oder unabsichtlich geschrieben werden. Da der Veröffentlichungs-/-Abonnementmechanismus vollständig implementiert ist, kann die Slave-Datenbank, wenn sie den Baum irgendwo synchronisiert, einen Kanal abonnieren und den vollständigen Nachrichtenveröffentlichungsdatensatz des Master-Servers empfangen. Die Synchronisierung ist hilfreich für die Skalierbarkeit und Datenredundanz von Lesevorgängen. Die offizielle Website-Adresse von

redis ist sehr leicht zu merken, sie lautet redis.io. (Ich habe speziell nachgesehen und festgestellt, dass das Domainnamensuffix io zum nationalen Domainnamen gehört, der Britisches Territorium im Indischen Ozean ist. das heißt, das Britische Territorium im Indischen Ozean)

Derzeit finanziert Vmware die Entwicklung und Wartung des redis Projekt.

2. Redis-Installation

Entpacken Sie die Installationsdatei

Nach dem Entpacken

Make zum Kompilieren ausführen

Kompilieren OK,

Geben Sie das src-Verzeichnis ein


Redis-cli-Terminalbetrieb

Redis-Serverdatei zum Starten des Redis-Dienstes

Redis-Benchmark-Druck Testdatei

Redis-check-xx Autoinspektion-Sicherungsdateiskript

Erstellen Sie das Redis-Laufverzeichnis und kopieren Sie die beiden Laufdateien dorthin

Kopieren Sie die Konfigurationsdatei in die Vergangenheit

3. Starten Sie den Redis-Dienst

Erfolgszeichen beim Starten des Redis-Dienst am Frontend

./redis-server

Zu diesem Zeitpunkt liegt ein Problem vor. Der aktuell gestartete Dienst kann nicht ausgeschaltet werden, daher muss er geändert werden.

Beenden Sie den Dienst. Strg+z

Stoppen Sie zuerst den Redis-Dienst

Verwenden Sie den Hintergrund, um den Redis-Dienst zu starten

vim redis.conf

Ändern Sie es auf „Ja“ und speichern Sie es. Legen Sie den Hintergrund fest, um Redis zu starten

Starten Sie es erneut

Ich habe festgestellt, dass die Vorderseite Ende noch gestartet

beim Start Starten Sie die Konfigurationsdatei gemeinsam

Überprüfen Sie den Redis-Prozess

Es wurde festgestellt, dass Redis gestartet wurde

4. Einfache Verwendung

Drei Variablen werden festgelegt und diese drei Variablen werden im Speicher gespeichert

Wie liest man?

Holen Sie sich!

5. Spezifische Operationen

1. Tastenoperation

In Redis können zusätzlich „n“ und Leerzeichen nicht verwendet werden Neben dem Komponenteninhalt können auch andere Inhalte als Namensteil des Schlüssels verwendet werden. Es besteht keine Anforderung an die Namenslänge

Mit anderen Worten, es handelt sich um den Variablennamen

Schlüssel eingeben

Schlüsselsekunden ablaufen lassen tr> tr>

Code

代码

作用

Exists key

是否存在

Del key1 key2 ….

删除指定的key

Type key

返回给定的key的value类型

Key pattern

返回匹配指定模式的所有的key

Rename oldkey newkey

改名字

Dbsize

返回当前数据库的key的数量

Expire key seconds

为key指定过期时间

Ttl key

返回key的过期秒数

Select db-index

选择数据库

Move key db-index

将key从当前数据库移动到指定数据库

Flushdb

删除当前数据库中所有的key

Flushall

删除所有数据库中的所有key

Funktion


Exists-Schlüssel
Exists

Entf key1 key2 ….

Löschen Sie den angegebenen Schlüssel

Gibt den Werttyp des angegebenen Schlüssels zurück

Schlüsselmuster

代码

作用

Set key value

设置key对应的值为string类型的value

Mset key1 value1…keyN valueN

一次设置多个key的值

Mget key1 key2 … keyN

一次获取多个key的值

Incr key

对key的值做++操作

Decr key

同上 –操作

Incrby key integer

同incr 加指定值

Decrby key integer

同decr 减指定值

Append key value

给指定key的字符串追加value

Substr key start end

返回截取过的key的字符串值

Gibt alle Schlüssel zurück, die dem angegebenen Muster entsprechen
Alten Schlüssel in neuen Schlüssel umbenennen Umbenennen
Dbsize Gibt die Anzahl der Schlüssel in der aktuellen Datenbank zurück
Ablaufzeit für Schlüssel angeben
Ttl-Taste Gibt die Ablaufsekunden des Schlüssels zurück
Datenbankindex auswählen Datenbank auswählen
Schlüssel db-index verschieben Schlüssel von der aktuellen Datenbank in die angegebene Datenbank verschieben
Flushdb Alle Schlüssel in der aktuellen Datenbank löschen
Flushall Alle Schlüssel in allen Datenbanken löschen td>
Hier ist ein Beispiel für die Verwendung von 2 Operation String ist der grundlegendste Typ von RedisDer String von Redis kann beliebige Daten enthalten, einschließlich JPG-Bildern oder serialisierten ObjektenDie maximale Grenze eines einzelnen Werts beträgt 1G Bytes

Code

Funktion

Schlüsselwert festlegen Setzen Sie den dem Schlüssel entsprechenden Wert auf einen Zeichenfolgentypwert Mset key1 value1...keyN valueN Legen Sie die Werte mehrerer Schlüssel gleichzeitig fest Mget key1 key2 … keyNMehrere Schlüssel auf einmal abrufen Der Wert eines Schlüssels Incr-Schlüssel right ++-Operation für den Wert des Schlüssels ausführen Decr-Taste Das Gleiche wie oben – Bedienung Incrby-Schlüssel-Ganzzahl Gleiche wie incr plus angegebener Wert Decrby-Schlüssel-Ganzzahl Gleiche wie decr minus dem angegebenen Wert Schlüsselwert anhängen Wert an die Zeichenfolge des angegebenen Schlüssels anhängen Substr key start endGibt den String-Wert des abgefangenen Schlüssels zurück

3. Einführung und Verwendung des Listentyps

Der Listentyp ist eigentlich eine doppelt verknüpfte Liste

Wenn Sie möchten Um die Top 10 der neuesten Benutzer abzufragen, müssen

einzeln überprüft werden, was zu viele Ressourcen verbraucht.

Beispiel für eine Listenkettentabelle:

über die Liste Die verknüpfte Liste speichert die Informationen der letzten 5 Benutzer, die sich im System angemeldet haben

Neue Benutzer kommen hinzu und alte Benutzer werden rausgeschmissen

Wie bedient man die verknüpfte Liste?

code

代码

作用

Lpush key  string

在key对应list的头部添加字符串元素

Rpop key

从list的尾部删除元素,并返回删除元素

Lien key 返回 key

对应list的长度,key值不存在返回0,如果key对应类型不是list返回错误

Rpush key  string

同上,在尾部添加

Lpop key

从list的头部删除元素,并返回删除元素

Ltrim key  start end

截取list,保留指定区间内的元素

Funktion


Lpush-Tastenzeichenfolge

Fügen Sie am Kopf der Liste ein Zeichenfolgenelement hinzu, das dem Schlüssel entspricht

td>

Rpop-Taste

Elemente entfernen aus das Ende der Liste und gibt das gelöschte Element zurück

代码

作用

Sadd key  member

添加一个string元素到key对应的set集合中,返回成功1

Srem key member

从key对应·set中移除给定元素,成功返回1

Smove p1 p2  member

从p1对应set中移除member并添加到p2对应set中

Scard key

返回set的元素个数

Sismember key  member

判断member是否存在set中

Sinter key1 key2.。。。

返回所有给定key的交集

Sunion key1  key2

返回所有给定key的并集

Sdiff key1 key2.。

返回所有给定key的差集

Smembers key

返回key对应set的所有元素,结果是无序的

Lien-Schlüssel Gibt den Schlüssel zurück
entspricht der Länge der Liste. Wenn der Schlüsselwert nicht vorhanden ist, 0 wird zurückgegeben. Wenn der entsprechende Typ des Schlüssels keine Liste ist, wird ein Fehler zurückgegeben
Rpush Schlüsselzeichenfolge Wie oben, fügen Sie
Lpop-Taste Löschen das Element aus dem Kopf der Liste und geben Sie das gelöschte Element zurück
Ltrim key start end Fangen Sie die Liste ab und halten Sie die Elemente im angegebenen Bereich
4. Set-Sammlungstyp Der Redis-Satz ist eine ungeordnete Sammlung vom Typ String. Set-Elemente können bis zu (2 hoch 32 - 1) Elemente enthalten Jedes Element in jedem Set kann nicht wiederholt werden

Code

Funktion

Fügen Sie ein Schlüsselelement hinzu Fügen Sie ein String-Element zur Set-Sammlung hinzu, das dem Schlüssel entspricht, und geben Sie Erfolg 1 zurück
Srem-Schlüsselmitglied Entsprechend aus Schlüsselsatz Entfernen Das angegebene Element von gibt erfolgreich 1
Smove p1 p2 member Entfernen Sie das Mitglied aus dem entsprechenden Satz von p1 und fügen Sie es dem entsprechenden Satz von p2 hinzu
Scard-Schlüssel Gibt die Anzahl der Elemente im Satz zurück
Sismember-Schlüsselmitglied Bestimmen Sie, ob ein Mitglied im Satz vorhanden ist
Sinter key1 key2.. . . Gibt den Schnittpunkt aller angegebenen Schlüssel zurück
Sunion key1 key2 Gibt die Vereinigung aller angegebenen Schlüssel zurück
Sdiff key1 key2.. Den Differenzsatz aller angegebenen Schlüssel zurückgeben
Smembers-Schlüssel Gibt alle Schlüssel zurück, die dem entsprechen Set-Elemente, das Ergebnis ist ungeordnet


Es gibt einen Schlüssel mit fünf Elementen darin

Dann füge einen Linken hinzu

Die Elemente im Satz können der Reihe nach über den Gewichtungswert abgerufen werden

Fall:

Verwenden Sie den Sortiersatz, um die 5 beliebtesten Beiträge zum Lernen zu erhalten

Jedes Element in der sortierten Menge ist eine Kombination aus Wert und Gewicht

Zadd key score member

Wie oben, die Rückgabe erfolgt in umgekehrter Reihenfolge tr>

Code

Funktion

Elemente zur Sammlung hinzufügen und die entsprechende Bewertung aktualisieren, wenn das Element in der Sammlung vorhanden ist

Zrem-Schlüsselmitglied strong>

代码

作用

Zadd key  score member

添加元素到集合,元素在集合中存在则更新对应score

Zrem key  member

删除指定元素,1成功,0不存在

Zincrby key incr  member

按照incr幅度增加对应member的score值,返回score值

Zrank key member

返回指定元素在集合中的排名(下标),集合中元素是安score从小到大排序的

Zrange key  start end

类似Irange操作从集合中指定区间的元素,返回的是有序结果

Zrevrange key start  end

同上,返回是逆序的

Zcard key

返回集合中元素个数

Zscore key elemet

返回给定元素对应的score

Zremrangebyrank  key min max

删除集合中排名在给点区间的元素

Das angegebene Element löschen, 1 erfolgreich, 0 existiert nicht
Zincrby key incr member Erhöhen Sie den Score-Wert des entsprechenden Mitglieds entsprechend dem Incr-Bereich und geben Sie den Score-Wert zurück
Zrank-Schlüsselmitglied Gibt die Rangfolge (Index) des angegebenen Elements in der Menge zurück. Die Elemente in Der Satz ist von klein nach groß nach Punktzahl sortiert
Zrange-Tastenanfang end Ähnlich wie bei der Irange-Operation werden die Elemente im angegebenen Bereich aus der Menge zurückgegeben. und die bestellten Ergebnisse werden zurückgegeben
Zrevrange key start end
Zcard-Schlüssel Gibt die Anzahl der Elemente in der Sammlung zurück
Zscore-Schlüsselelement strong> Gibt die Punktzahl zurück, die dem angegebenen Element entspricht
Zremrangebyrank key min max Elemente in der Sammlung löschen, die im angegebenen Punktintervall geordnet sind


6. Snapshot-Persistenz

Speichern (Snapshot) einer Tastenänderung in 900 Sekunden

Zehn Tastenänderungen in 300 Sekunden (Snapshot) Speichern

Zehntausend Schlüsseländerungen in einer Minute (Snapshot) Speichern

Die Vorteile einer solchen Kontrolle:

Die Häufigkeit der Datenänderung ist sehr hoch und die Häufigkeit der Sicherung ist ebenfalls hoch,

Die Häufigkeit der Datenänderung ist gering und die Häufigkeit der Sicherung ist ebenfalls gering.

Der Name der Snapshot-Persistenz



Snapshot-Persistenz manuell initiieren

Wenn für diese Maschine:

7. AOF-Persistenz

Essenz: Sichern Sie jeden vom Benutzer ausgeführten „Schreib“-Befehl (Hinzufügen, Löschen, Ändern) in einer Datei und führen Sie beim Wiederherstellen den spezifischen „Schreib“-Befehl aus.

Durch Aktivieren der AOF-Persistenz wird das Innere von Redis gelöscht Daten

AOF-Persistenz aktivieren

Die Konfigurationsdatei wird geändert und der Dienst neu gestartet

Redis anzeigen-Prozess : Ps – A |. grep redis

-9 Force-Kill-Prozess

Neuen Prozess starten

Aof fügt dauerhafte Sicherungshäufigkeit hinzu

Immer Erzwingt das Schreiben auf die Festplatte sofort nach dem Empfang eines Schreibbefehls.

Everysec erzwingt das Schreiben auf die Festplatte einmal pro Sekunde , empfohlen

Nein, ist für die beste Leistung vollständig auf das Betriebssystem angewiesen, Persistenz ist nicht garantiert

8. Master-Slave-Modus

Um die Belastung jedes Redis-Servers zu reduzieren, Sie können mehrere festlegen und im Master-Slave-Modus

Ein Server lädt „schreibt“

Andere Server lädt „liest“

Der Master-Server synchronisiert sich automatisch mit dem Slave Server


IP-Adresse und Portnummer ändern

Das obige ist der detaillierte Inhalt vonBeginnen Sie mit dem Redis-Cache von Grund auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage