Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Redis-Counter-Methode zur Verhinderung von Order-Brushing

Einführung in die Redis-Counter-Methode zur Verhinderung von Order-Brushing

小云云
小云云Original
2017-12-14 14:29:172630Durchsuche

Wenn wir das Parallelitätslimit für die Schnittstellenanforderung verwalten oder eine Sicherheitsüberwachung durchführen möchten, um beispielsweise bei einer Schnittstellenanforderung Bestellbetrug zu verhindern, ist die Gesamtzahl der Anfragen pro Sekunde auf 200 begrenzt. Wenn die Anzahl überschritten wird 200, warten und warten. Eine Sekunde, erneut anfordern, hier wird ein Redis als Gegenmodus zur Implementierung verwendet. Dieser Artikel stellt Ihnen hauptsächlich die Methode und den zugehörigen Code von Redis vor, um einen Zähler zu implementieren, um betrügerische Bestellungen zu verhindern. Er hat einen gewissen Referenzwert und Freunde in Not können mehr darüber erfahren.

Redis-Methode aufrufen:

INCR-Taste

Erhöhen Sie den in der Taste gespeicherten numerischen Wert um eins.

Wenn der Schlüssel nicht vorhanden ist, wird der Wert des Schlüssels zuerst auf 0 initialisiert und dann wird die INCR-Operation ausgeführt.

Gibt einen Fehler zurück, wenn der Wert den falschen Typ enthält oder wenn ein Wert vom Typ Zeichenfolge nicht als Zahl dargestellt werden kann.

Dies ist eine Operation für Zeichenfolgen. Da Redis keinen dedizierten Ganzzahltyp hat, wird die im Schlüssel gespeicherte Zeichenfolge als dezimale 64-Bit-Ganzzahl mit Vorzeichen interpretiert, um die INCR-Operation auszuführen.

Code:

redis> SET test 20
OK
redis> INCR test
(integer) 21
redis> GET test # 数字值在 Redis 中以字符串的形式保存
"21"

Zählerimplementierung

Zähler ist die Atomizität von Redis Obwohl es sich um den intuitivsten Modus handelt, der durch eine automatische Inkrementierungsoperation implementiert werden kann, ist die Idee recht einfach: Senden Sie bei jedem Auftreten einer Operation einen INCR-Befehl an Redis.

Wenn Sie beispielsweise in einer Webanwendung die Anzahl der Benutzerklicks pro Tag für ein Jahr wissen möchten, müssen Sie nur die Benutzer-ID und die zugehörigen Datumsinformationen als Schlüssel verwenden und jedes Mal ausführen Der Benutzer klickt auf die Seite. Ein einziger automatischer Inkrementierungsvorgang reicht aus.

Wenn der Benutzername beispielsweise peter lautet und die Klickzeit der 22. März 2012 ist, führen Sie den Befehl INCR peter::2012.3.22 aus.

$redisKey = “api_name_” + $api;
$count = $this->redis->incr($redisKey);
if ($count == 1) {
//设置有效期一s
$this->redis->expire($redisKey,1);//设置一s的过期时间
}
if (count > 200) {//防止刷单的安全拦截
return false;//超过就返回false
}
//后续处理

Dies implementiert einfach die Anwendung des Redis-Zählers, und es gibt auch die folgenden Methoden:

Es gibt mehrere Möglichkeiten, dieses einfache Muster zu erweitern:

Sie können INCR und EXPIRE in Kombination verwenden, um den Zweck zu erreichen, nur innerhalb der angegebenen Überlebenszeit zu zählen.
Der Client kann den aktuellen Wert des Zählers atomar abrufen und den Zähler löschen, indem er den Befehl GETSET verwendet. Weitere Informationen finden Sie im Befehl GETSET.
Mit anderen Inkrementierungs-/Dekrementierungsoperationen wie DECR und INCRBY können Benutzer den Wert des Zählers erhöhen oder verringern, indem sie verschiedene Operationen ausführen. Diese Befehle können beispielsweise für Torschützen in Spielen verwendet werden.

Verwandte Empfehlungen:

Zusammenfassung der Verwendung der Redis-Funktion in PHP

Vollständige Aufzeichnung der Redis-Clusterkonstruktion

10 empfohlene Inhalte für Leistungsindikatoren

Das obige ist der detaillierte Inhalt vonEinführung in die Redis-Counter-Methode zur Verhinderung von Order-Brushing. 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