1. Cache/gemeinsame Sitzung mit hoher Parallelität:
UserInfo getUserInfo (lange ID) {}
Get:
userRedisKey = "user:info:" + id;
value = redis.get(userRedisKey);
if (value != null) {
userInfo = deserialize(value);
return userInfo; >
redis.setex(userRedisKey, 3600, serialize(userInfo)); Die Verwendung einer Zeichenfolge zum Speichern serialisierter Daten ist nicht drei -dimensional und intuitiv genug. Es kann in hmset konvertiert und als Hash-Struktur gespeichert werden, was den Zugriff komfortabler macht2. Einfache verteilte Sperre
setnx kann nur erfolgreich festgelegt werden, wenn es nicht existiert, und der Rest kann nur warten. Single-Thread3. Counter incr, da es sich um einen Single-Thread handelt, weniger CPU verbraucht als Cas usw. und eine höhere Leistung hat
lange incrVideoCounter ( long id) { key = "video:playCount:" + id; >4. Stack/Warteschlange implementieren
Stack: lpush + lpop
Warteschlange: lpush + rpop
5. Flusskontrolle/Geschwindigkeitsbegrenzung
phoneNum = "12345678999"; key = "shortMsg:limit:" + phoneNum;
isExists = redis.set(key, 1, "EX 60", "NX");
if (isExists != null ||. redis.incr(key) <= 5) {
//Pass
} else { verwendend verwendend verwendend verwendend verwendend verwendend verwendend durch durch durch durch ' ' durch durch off ‐ ‐‐ ‐‐ ‐‐‐‐‐ und } } to pass } >
Verwenden Sie lpush + brpop, um eine Blockierungswarteschlange zu implementieren. Der Produzent fügt Elemente vom linken Ende der ein Liste mit lpush, und mehrere Verbraucher blockieren und erhalten die Endelemente der Warteschlange vom rechten Ende des brpop
7. Jeder Benutzer hat seinen eigenen Artikel, jetzt den Artikel Liste wird in Seiten angezeigt
hmset Article:1 Titel xx Kontext XXXX
lpush user:1:articles srticle:1 Articles:3
Articles = lrange user :1:articles 0 9
für Artikel in {articles}
hgetall {article}
8. Folgen und liken Sie
Gefällt mir: Zincrby User:ranking:2016_03_15 mike 1
Abbrechen: zrem user:ranking:2016_03_15 mike Die 10 Benutzer mit den meisten Likes: zrevrangebyrank user:ranking :2016_03_15 0 9
Benutzerinformationen und Punktestände anzeigen: hgetall user:info:tom / zscore user:ranking:2016_03_15 mike / zrank user:ranking :2016_03_15 mike
9. Bitmaps berechnen die Beziehungen zwischen großen Datensätzen
10. Rangliste
Mike hat ein Video hochgeladen und erhalten 3 Likes zadd user:ranking:2016_03_15 mike 3
Einer anderen Person hat es gefallen Zincrby user:ranking:2016_03_15 mike 1
11. Folgen Sie
Tags hinzufügen zu Benutzer sadd user:1:tags tag1 tag2
Tags hinzufügen Benutzer sadd tag1:uses user:1 Allgemeine Aufmerksamkeit sinter user:1:tags user:2 :tags
sinter/sunion/sdiff
12. Veröffentlichen und abonnieren
Video abonnieren:changes:
Video veröffentlichen:Ändert „Video1,Video2“
für Video in Video1,Video2 > Effizienz
Persistente RDB (Erstellung untergeordneter Prozesse, Binärdatei, schnelle Wiederherstellung). , nicht Echtzeit genug)/AOF (nur anhängen. Textdateien, Echtzeit-Schreibvorgänge, zuerst aop_buffer, dann durch Konfigurieren des Schreibintervalls auf die Festplatte schreiben und bei Erreichen einer bestimmten Größe zusammenführen)
Batch-HMGET und andere Vorgänge müssen in hscan und andere konvertiert werden progressive Traversal-Methoden, sonst ist es leicht zu blockieren
Pufferung: Client-Puffer (Eingabe/Ausgabe), Backlog-Puffer kopieren, Aof-Puffer
Kopieren: vollständiger/inkrementeller Kopierversatz/Backlog-Puffer kopieren ( Schreibbefehle werden gleichzeitig an den Slave-Server gesendet. Außerdem wird eine First-In-First-Out-Warteschlange verwaltet, was bedeutet, dass der Hauptdienst auch die zuletzt weitergeleiteten Befehle/IDs speichert.
sentinal: Um eine hohe Verfügbarkeit zu erreichen, können Sie den Cluster selbst konfigurieren und den Redis-Datencluster durch Heartbeat und andere Mechanismen überwachen. Wenn ein Knoten ausfällt, kann er rechtzeitig erkannt werden automatisch migrierter
Cluster: verteilter Cluster, fehlertolerante Leader-Auswahl usw. Zuordnung physischer Knoten zu 16383 Slots, um Dynamik zu erreichen
Weitere technische Artikel zu Redis finden Sie in der Spalte Redis-Tutorial, um mehr zu erfahren!
Das obige ist der detaillierte Inhalt vonWo wird Redis verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!