Einstellung der Redis-Überlebenszeit
Redis bietet eine Überlebenszeit für Schlüssel. Wenn die Überlebenszeit nicht angegeben ist, ist die Überlebenszeit dauerhaft. Redis löscht diesen Schlüssel nach Ablauf der Zeit automatisch. Sie können den Befehl EXPIRE verwenden. Die Zeiteinheit ist Sekunden. Wenn eine Taste auf eine begrenzte Überlebenszeit eingestellt ist, wird sie wieder auf permanent gesetzt, wenn die SET-Taste neu zugewiesen wird:
SET session:captcha sd2a EXPIRE session:captcha 600
Abbrechen der Überlebenszeit und ändern Sie die Lebensdauer des Schlüssels auf permanent, also PERSIST:
PERSIST session:captcha
Verwenden Sie den TTL-Befehl, um die Lebensdauer eines Schlüssels zu überprüfen. -1 bedeutet dauerhaft oder nach Ablauf gelöscht.
TTL session:captcha
Die Überlebenszeit wird während der Redis-Befehle INCR, LPUSH, HSET, ZREM und anderer Befehle nicht geändert.
(Empfohlen: Redis-Video-Tutorial)
Wenn Sie die Zeit millimetergenau steuern möchten, benötigen Sie PEXPIRE und verwenden PTTL, um die verbleibende Zeit zu überprüfen.
Was ist, wenn Sie eine Ablaufzeit angeben möchten, anstatt wie viele Sekunden es ablaufen soll? Sie benötigen EXPIREAT und PEXPIREAT. Der Parameter von EXPIREAT ist der Zeitstempel des Ablaufs (Sekunden) und der Parameter von PEXPIREAT ist die Ablaufzeit des Zeitstempels (Millisekunden)
SET session:captcha sd2a EXPIREAT session:captcha 1399902009 PEXPIREAT session:captcha 1399902009000
Anwendungsszenario 1: Zugriffshäufigkeitsbegrenzung: Wir beschränken jeden Benutzer auf nur 1 Minute Kann 10 Seiten durchsuchen. Der Pseudocode lautet wie folgt:
$isExists = EXISTS limit:user1:192.168.1.2 if($isExists){ $num = INCR limit:user1:192.168.1.2 if($num > 10){ print '超过限制' exit } }else{ MULTI INCR limit:user1:192.168.1.2 EXPIRE limit:user1:192.168.1.2 60 EXEC }
Der Grund, warum wir Transaktionen verwenden, liegt darin, dass der Client nach der Ausführung von INCR limit:user1:192.168.1.2 und vor der Ausführung von EXPIRE limit:user1:192.168.1.2 60 hinzugefügt wird . Dann werden der Schlüssel und der Wert beibehalten. Und auf diese ID kann nur 10 Mal im Leben zugegriffen werden. Das ist schade.
Anwendungsszenario 2: Caching implementieren. Die Berechnung der Rankings von 10.000 Benutzern ist sehr ressourcenintensiv, daher speichern wir die Daten nach der ersten Berechnung in einem Schlüssel und legen dann die Überlebenszeit für diesen Schlüssel fest. Nach einer Stunde läuft die Überlebenszeit ab, der Schlüssel wird gelöscht, es wird erneut ein neues Ranking berechnet und ein temporärer Schlüssel gespeichert. Wir verwenden Pseudocode zur Implementierung:
//战斗排行榜 $rank = GET cache:rank:fight if not $rank $rank = 计算排名() MULTI SET cache:rank:fight $rank EXPIRE cache:rank:fight 3600 EXEC
Redis ist eine im Speicher gespeicherte Datenbank. Wenn der Speicher voll ist, löscht Redis einen bestimmten Cache basierend auf der Konfigurationsdatei. Das Konfigurationselement ist der Parameter maxmemory in der Redis-Konfigurationsdatei und die Einheit ist Bytes. Nachdem dieser Grenzwert überschritten wurde, werden unnötige Schlüssel gemäß dem Parameter maxmemory-policy in der Konfigurationsdatei gelöscht. Die optionalen Regeln von maxmemory-policy sind die folgenden vier:
1. volatile-lru: Verwenden Sie den LRU-Algorithmus, um einen Schlüssel (einen Schlüssel mit festgelegter Überlebenszeit) zu löschen.
2. allkey-lru: Verwenden Sie den LRU-Algorithmus, um einen Schlüssel zu löschen.
3. Volatil-zufällig: Einen Schlüssel sofort löschen (Schlüssel mit festgelegter Lebensdauer).
4. allkey-random: Einen Schlüssel sofort löschen.
5. volatile-ttl: Löschen Sie einen Schlüssel, dessen Lebensdauer bald abläuft. Es besteht darin, N Schlüssel auf einmal herauszunehmen und dann die Schlüssel unter den N Schlüsseln zu löschen, die bald ablaufen, anstatt alle Schlüssel zu durchlaufen, um die Schlüssel zu löschen, die bald ablaufen. Was ist N? Konfigurationsdatei.
6. Fehler: Nicht löschen, Fehler zurückgeben.
Redis legt die Ablaufzeit des Schlüssels fest – EXPIRE-Befehl
EXPIRE key seconds
legt die Überlebenszeit für den angegebenen Schlüssel fest. Wenn der Schlüssel abläuft (die Überlebenszeit ist 0), wird er automatisch gelöscht .
In Redis werden Schlüssel mit Überlebenszeit als „volatil“ bezeichnet.
Die Lebensdauer kann durch Löschen des gesamten Schlüssels mit dem DEL-Befehl entfernt oder mit den Befehlen SET und GETSET überschrieben werden. Dies bedeutet, dass ein Befehl nur einen Schlüssel mit einer Lebensdauer ändert (ändern), wenn der Wert von Wird der Schlüssel durch einen neuen Schlüsselwert ersetzt, wird die Lebensdauer nicht geändert.
Wenn Sie beispielsweise den INCR-Befehl für einen Schlüssel ausführen, den LPUSH-Befehl für eine Liste ausführen oder den HSET-Befehl für eine Hash-Tabelle ausführen, ändern diese Vorgänge nicht die Überlebenszeit des Schlüssels selbst.
Wenn Sie andererseits RENAME verwenden, um einen Schlüssel umzubenennen, ist die Überlebenszeit des umbenannten Schlüssels dieselbe wie vor der Umbenennung.
Eine weitere Möglichkeit des RENAME-Befehls besteht darin, zu versuchen, einen Schlüssel mit einer Lebensdauer in einen anderen_Schlüssel mit einer Lebensdauer umzubenennen. In diesem Fall wird der alte another_key (und seine Lebensdauer) gelöscht und dann der alte Schlüssel umbenannt werden, daher ist die Überlebenszeit des neuen another_key dieselbe wie die des ursprünglichen Schlüssels.
Verwenden Sie den Befehl PERSIST, um die Lebensdauer des Schlüssels zu entfernen, ohne den Schlüssel zu löschen, wodurch der Schlüssel wieder zu einem „persistenten“ Schlüssel wird.
Überlebenszeit aktualisieren
Sie können den EXPIRE-Befehl auf einem Schlüssel ausführen, der bereits eine Überlebenszeit hat, und die neu angegebene Überlebenszeit ersetzt die alte Überlebenszeit.
Genauigkeit der Ablaufzeit
In der Redis 2.4-Version liegt die Verzögerung der Ablaufzeit innerhalb von 1 Sekunde – das heißt, selbst wenn der Schlüssel abgelaufen ist. Aber es kann sein Innerhalb einer Sekunde nach Ablauf kann weiterhin darauf zugegriffen werden, und in der neuen Redis 2.6-Version wird die Verzögerung auf weniger als 1 Millisekunde reduziert.
Unterschiede vor Redis 2.1.3
In Versionen vor Redis 2.1.3 führt das Ändern eines Schlüssels mit einer Überlebenszeit dazu, dass der gesamte Schlüssel gelöscht wird, dieses Verhalten Dies war auf Einschränkungen der damaligen Replikationsebene zurückzuführen und diese Einschränkung wurde nun behoben. Verfügbare Versionen:
>= 1.0.0
Zeitkomplexität:
O(1)
Rückgabewert:
设置成功返回 1 。
当 key 不存在或者不能为 key 设置生存时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的生存时间),返回 0 。
redis> SET cache_page "www.google.com" OK redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒 (integer) 1 redis> TTL cache_page # 查看剩余生存时间 (integer) 23 redis> EXPIRE cache_page 30000 # 更新过期时间 (integer) 1 redis> TTL cache_page (integer) 29996
1、在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time。
2、redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。
3、如果对key使用set或del命令,那么也会移除expire time。尤其是set命令,这个在编写程序的时候需要注意一下。
4、redis2.1.3之前的老版本里,如果对volatile keys 做相关写入操作(LPUSH,LSET),和其他一些触发修改value的操作时,redis会删除 该key。
也就是说 :
redis.expire(key,expiration); redis.lpush(key,field,value); redis.get(key) //return null
redis2.1.3之后的版本里面没有这个约束,可以任意修改。
redis.set(key,100); redis.expire(key,expiration); redis.incr(key) redis.get(key) //redis2.2.2 return 101; redis<2.1.3 return 1;
5、redis对过期键采用了lazy expiration:在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。
更多redis知识请关注redis入门教程栏目。
Das obige ist der detaillierte Inhalt vonEinstellung der Redis-Überlebenszeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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.

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

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.

Um die Operationen zu sperren, muss die Sperre durch den Befehl setNX erfasst werden und dann den Befehl Ablauf verwenden, um die Ablaufzeit festzulegen. Die spezifischen Schritte sind: (1) Verwenden Sie den Befehl setNX, um zu versuchen, ein Schlüsselwertpaar festzulegen; (2) Verwenden Sie den Befehl Ablauf, um die Ablaufzeit für die Sperre festzulegen. (3) Verwenden Sie den Befehl Del, um die Sperre zu löschen, wenn die Sperre nicht mehr benötigt wird.

Redis verwendet Hash -Tabellen, um Daten zu speichern und unterstützt Datenstrukturen wie Zeichenfolgen, Listen, Hash -Tabellen, Sammlungen und geordnete Sammlungen. Ernähren sich weiterhin über Daten über Snapshots (RDB) und appendiert Mechanismen nur Schreibmechanismen. Redis verwendet die Master-Slave-Replikation, um die Datenverfügbarkeit zu verbessern. Redis verwendet eine Ereignisschleife mit einer Thread, um Verbindungen und Befehle zu verarbeiten, um die Datenatomizität und Konsistenz zu gewährleisten. Redis legt die Ablaufzeit für den Schlüssel fest und verwendet den faulen Löschmechanismus, um den Ablaufschlüssel zu löschen.

Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus.

Redis unterstützt als Messing Middleware Modelle für Produktionsverbrauch, kann Nachrichten bestehen und eine zuverlässige Lieferung sicherstellen. Die Verwendung von Redis als Message Middleware ermöglicht eine geringe Latenz, zuverlässige und skalierbare Nachrichten.
