Heim  >  Artikel  >  Datenbank  >  Mehrere Anwendungen des Redis-String-Typs

Mehrere Anwendungen des Redis-String-Typs

齐天大圣
齐天大圣Original
2020-05-11 10:00:431376Durchsuche

Der String-Datentyp von Redis ist der einfachste Datentyp, aber er ist auch die Grundlage für das Erlernen anderer Redis-Datentypen. Im Folgenden werden verschiedene Anwendungen von Redis vorgestellt.

Strombegrenzung

Die Verwendung von Redis kann den Strom begrenzen. Redis selbst verfügt über eine extrem hohe Leistung und kann einigen Anforderungen standhalten.

Verteidigen Sie sich gegen großen Datenverkehr

Heutzutage nehmen Website-Angriffe immer mehr zu. Statische Ressourcen können durch CDN geschützt werden, aber wie kann man sich dynamisch verteidigen? Programme. Nachfolgend zeigen wir eine Redis-Lösung zur Abwehr einer großen Anzahl von Anfragen.

Die Grundidee besteht darin, die Anzahl der Anfragen nach einer IP innerhalb eines bestimmten Zeitraums zu begrenzen. Beispielsweise darf die Anzahl der Anfragen nach einer IP nicht mehr als 10 Mal pro Sekunde betragen.

Der Pseudocode lautet wie folgt:

function ip_limit($cnt = 10)
{
    $ip = $_SERVER['SERVER_ADDR'];
    $key = "limit:$ip:cnt";
    $isExisit = $redis->set($key, 1, ['nx', 'ex'=>1]);
    
    if (!$isExisit || $redis->incr($key) <= $cnt) {
        // 通过
        return true;
    } else {
        // 不通过
        return false;
    }
}

Bestätigungscode-Häufigkeitslimit abrufen

Der SMS-Bestätigungscode ist jetzt ein Webanwendung Standardmäßig sind an vielen Orten SMS-Bestätigungscodes erforderlich. Zum Beispiel: bei der Registrierung, beim Ändern von Passwörtern und bei einigen Vorgängen, die höhere Sicherheitsanforderungen erfordern. Natürlich ist der Erhalt von Verifizierungscodes nicht kostenlos, daher möchten wir nicht, dass Benutzer unbegrenzt Verifizierungscodes erhalten.

Wir können eine Anwendung schreiben, die die Häufigkeit des Erhalts von SMS-Bestätigungscodes begrenzt.

Füllen Sie einen Antrag aus, mit dem Sie nur einmal innerhalb einer Minute einen Bestätigungscode erhalten können. Der Pseudocode lautet wie folgt:

function code_limit($mobile, $time = 60)
{
    $key = "limit:$mobile:cnt";
    $isExisit = $redis->set($key, 1, [&#39;nx&#39;, &#39;ex&#39;=>$time]);
    
    if (!$isExisit) {
        // 通过
        return true;
    } else {
        // 不通过
        return false;
    }
}

Sitzung speichern

Die Verwendung von Redis zum Speichern von Sitzungen ist jetzt die empfohlene Methode. Seine Vorteile sind hohe Leistung und automatische Ecstasy, wenn es abläuft. (Der PHP-eigene Session-Garbage-Collection-Mechanismus ist nicht zuverlässig und es besteht die Möglichkeit, dass Ecstasy abgelaufen ist.)

Diese Methode ist sehr einfach, ändern Sie einfach die Datei php.ini.

Suchen Sie die Zeile session.save_handler und ändern Sie sie in

session.save_handler = redis

Ändern Sie session.save_path in

session.save_path = "tcp://localhost:6379"

Wenn Sie ein Passwort für Redis festgelegt haben, ändern Sie es einfach in

session.save_path = "tcp://localhost:6379?auth=password"

Wenn es sich nicht um eine eigenständige Anwendung, sondern um eine verteilte Anwendung handelt, wie kann man dann mit Redis Sitzungen zentral verwalten?

ist auch sehr einfach. Ändern Sie einfach die Datei php.ini. Wenn die Sitzung zentral auf der Maschine 192.168.1.220 verwaltet wird, werden die php.ini-Dateien anderer Maschinen wie folgt geändert:

session.save_handler = redis
session.save_path = "tcp://192.168.1.220:6379?auth=password"

Das Obige stellt nur einige Anwendungen vom Typ Redis-String vor. Entwickler können praktische Projekte und ihre kombinieren eigene Nutzen Sie Ihre Fantasie, um weitere Anwendungen zu erstellen

Das obige ist der detaillierte Inhalt vonMehrere Anwendungen des Redis-String-Typs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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