Database Reference
In-Depth Information
Wenn Sie in der Redis-Dokumentation nach RPOPRPUSH , LPOPLPUSH und LPO-
PRPUSH suchen, werden Sie konsterniert feststellen, dass es sie nicht gibt.
RPOPLPUSH ist Ihre einzige Option, und Sie müssen Ihre Listen entsprechend
aufbauen.
Blockierende Listen
Da unser URL-Shortener langsam Fahrt aufnimmt, wollen wir ihn um einige
soziale Aktivitäten erweitern, etwa ein Echtzeit-Kommentarsystem, bei dem
Leute die von ihnen besuchten Websites kommentieren können.
Wir wollen ein einfaches Messaging-System schreiben, bei dem mehrere Cli-
ents Kommentare in eine Queue schieben können und ein anderer Client
(der Digester) Nachrichten aus der Queue entnimmt. Der Digester soll nur
auf neue Kommentare warten und sie entnehmen, sobald sie eintreffen. Re-
dis stellt für solche Aufgaben einige blockierende Befehle zur Verfügung.
Zuerst öffnen wir ein weiteres Terminal-Fenster und starten einen weiteren
redis-cli -Client. Das ist unser Digester. Der Befehl, der solange blockiert,
bis ein Wert vorhanden ist, lautet BRPOP . Er verlangt den Schlüssel, aus dem
ein Wert über Pop abgerufen werden soll, sowie einen Timeout in Sekunden,
den wir mit fünf Minuten festlegen.
redis 127.0.0.1:6379> BRPOP comments 300
Dann wechseln wir zurück in die erste Console und pushen eine Nachricht
in die Kommentare.
redis 127.0.0.1:6379> LPUSH comments "Prag is great! I buy all my books there."
Wechseln Sie zurück in die Digester-Console. Zwei Zeilen werden zurückge-
liefert: der Schlüssel und der mit Pop abgerufene Wert. Es wird auch ange-
geben, wie lange der Befehl blockiert hat.
1) "comments"
2) "Prag is great! I buy all my books there."
(50.22s)
Es gibt auch eine blockierende Version eines linken Pops ( BLPOP ) und eines
rechten Pops/linken Pushs ( BRPOPLPUSH ).
Set
Unser URL-Shortener entwickelt sich gut, doch es wäre schön, wenn wir gän-
gige URLs in irgendeiner Weise gruppieren könnten.
Search WWH ::




Custom Search