Heim  >  Artikel  >  Datenbank  >  Lassen Sie uns ausführlich über die 5 grundlegenden Datentypen in Redis sprechen

Lassen Sie uns ausführlich über die 5 grundlegenden Datentypen in Redis sprechen

青灯夜游
青灯夜游nach vorne
2021-11-23 18:56:552324Durchsuche

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis der 5 grundlegenden Datentypen in Redis (String, List, Set, Hash, Zset Ordered Set). Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns ausführlich über die 5 grundlegenden Datentypen in Redis sprechen

Einführung in die Redis-Datenstruktur

Bei Redis sind alle Schlüssel Zeichenfolgen. Wenn wir über grundlegende Datenstrukturen sprechen, besprechen wir die Datentypen zum Speichern von Werten, zu denen hauptsächlich fünf gängige Datentypen gehören: String, List, Set, Zset und Hash. [Verwandte Empfehlungen: Redis-Video-Tutorial]

Lassen Sie uns ausführlich über die 5 grundlegenden Datentypen in Redis sprechen

Eine Sammlung von Zeichenfolgen, einschließlich grundlegender Methoden, um zu sehen, ob es Addition, Erwerb und Löschung gibt; sie umfasst auch die Berechnung von Schnittmenge, Vereinigung, Differenz usw.Hash-Hashenthält Methoden zum Hinzufügen, Abrufen und Löschen eines einzelnen ElementsZset geordnete Mengezwischen String-Mitgliedern und verwendet Fließkomma-Brüche Geordnete Zuordnung; die Reihenfolge der Elemente wird durch die Größe der Punktzahl bestimmt; die Einschlussmethoden umfassen das Hinzufügen, Erhalten, Löschen eines einzelnen Elements und das Abrufen von Elementen basierend auf dem Bewertungsbereich oder MitgliedString-Zeichen String String-Typ ist binärsicher, was bedeutet, dass Redis-String beliebige Daten enthalten kann. Zum Beispiel Zahlen, Zeichenfolgen, JPG-Bilder oder serialisierte Objekte. Befehl mit
Strukturtyp Der in der Struktur gespeicherte Wert Die Lese- und Schreibfunktionen der Struktur
String-String kann eine Zeichenfolge, eine Ganzzahl oder eine Gleitkommazahl sein, auf der gesamten Zeichenfolge oder auf einem Teil der Zeichenfolge operieren; eine Inkrementierungs- oder Dekrementierungsoperation für eine Ganzzahl oder eine Gleitkommazahl durchführen, eine verknüpfte Liste; Jeder Knoten enthält eine Zeichenfolge Führen Sie Push- und Pop-Operationen an beiden Enden der verknüpften Liste aus, lesen Sie einzelne oder mehrere Elemente basierend auf dem Wert
Enthält keinen Schlüsselwert Paare Eine geordnete Hash-Tabelle
Wie ein Hash wird sie zum Speichern von Schlüssel-Wert-Paaren
Detaillierte Erklärung der grundlegenden Datenstruktur
String ist der grundlegendste Datentyp in Redis, ein Schlüssel entspricht einem Wert.

Befehl

Kurzbeschreibung

Mit

  • GETDen im angegebenen Schlüssel gespeicherten Wert abrufen Name
SETDELLöschen des im angegebenen Schlüssel gespeicherten WertsErhöhen des im Schlüssel gespeicherten Werts um 1Verringern Sie den vom Schlüssel gespeicherten Wert um 1. Schlüsselspeicher Der Wert minus der Ganzzahl
Set der im angegebenen Schlüssel gespeicherte Wert SET name value
DEL name INCR
INCR key DECR
DECR-Taste. INCRBY VON
DECRBY-Schlüsselmenge
  • Befehlsausführung
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> get counter
"3"
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
  • Praktisches Szenario
    • Cache: Klassisches Nutzungsszenario, legen Sie allgemeine Informationen, Zeichenfolgen, Bilder oder Videos und andere Informationen in Redis ab, Redis dient als Cache-Ebene und MySQL dient als Persistenzschicht: Reduzieren Sie den Lese- und Schreibdruck von MySQL.
    • Counter: Redis ist ein Single-Threaded-Modell, bis der nächste ausgeführt wird. Gleichzeitig können die Daten in einem Schritt auf andere Datenquellen übertragen werden.
    • Sitzung: Eine gängige Lösung ist Spring Session + Redis, um die Sitzungsfreigabe zu realisieren Liste).
  • Mit der Listenstruktur können wir problemlos die neueste Nachrichtenwarteschlangenfunktion implementieren (z. B. TimeLine von Sina Weibo). Eine weitere Anwendung von List ist die Nachrichtenwarteschlange. Sie können die PUSH-Operation von List verwenden, um Aufgaben in der Liste zu speichern, und dann verwendet der Arbeitsthread die POP-Operation, um die Aufgaben zur Ausführung herauszunehmen.

Befehlsverwendung

Befehl
  • KurzbeschreibungVerwendung
LPUSHRPOPLPOP LRANGELINDEXlpush+ltrim=Begrenzte Sammlung (begrenzte Sammlung)
RPUSH Schieben Sie den angegebenen Wert an das rechte Ende der Liste RPUSH-Schlüsselwert
Den angegebenen Wert an das linke Ende der Liste verschieben LPUSH-Schlüsselwert
Einen Wert vom rechten Ende der Liste einfügen und den angezeigten Wert zurückgeben RPOP-Schlüssel
aus der Liste Einen Wert am linken Ende einfügen und den angezeigten Wert zurückgeben LPOP-Taste
Alle Werte der Liste im angegebenen Bereich abrufen LRANGE-Taste 0 -1
Holen Sie sich die Liste nach Indexelementen in . Sie können auch negative Indizes verwenden, wobei -1 das letzte Element der Liste, -2 das vorletzte Element der Liste usw. darstellt. LINEX-Schlüsselindex
Tipps zur Verwendung von Listen lpush+lpop=Stapel(Stapel) lpush+rpop=Warteschlange(Warteschlange)
lpush +brpop=Nachrichtenwarteschlange (Nachrichtenwarteschlange)
    • Befehlsausführung
    • 127.0.0.1:6379> lpush mylist 1 2 ll ls mem
      (integer) 5
      127.0.0.1:6379> lrange mylist 0 -1
      1) "mem"
      2) "ls"
      3) "ll"
      4) "2"
      5) "1"
      127.0.0.1:6379> lindex mylist -1
      "1"
      127.0.0.1:6379> lindex mylist 10        # index不在 mylist 的区间范围内
      (nil)
    • Praktisches Szenario
  • Weibo-Zeitleiste
  • : Jemand postet ein Weibo, fügt es mit lpush zur Zeitleiste hinzu und zeigt neue Listeninformationen an.
  • Message Queue
    • Set Collection
    • Redis‘ Set ist eine ungeordnete Sammlung vom Typ String. Satzmitglieder sind eindeutig, was bedeutet, dass im Satz keine doppelten Daten vorkommen können.
  • Sammlungen in Redis werden über Hash-Tabellen implementiert, sodass die Komplexität des Hinzufügens, Löschens und Suchens O(1) beträgt.

Befehlsverwendung

Befehl
  • Kurzbeschreibung Verwendung
SCARDSMEMBER SISMEMBER-SchlüsselmitgliedEinige andere Mengenoperationen finden Sie hierhttps://www.runoob.com/redis/redis-sets.html
127.0.0.1:6379> sadd myset ycf ycf1 xiao ycf
(integer) 3
127.0.0.1:6379> smember myset
1) "xiao"
2) "ycf1"
3) "ycf"
127.0.0.1:6379> sismember myset ycf
(integer) 1
Tatsächliches Szenario (Tag), fügen Sie dem Benutzer ein Tag hinzu, oder der Benutzer fügt der Nachricht ein Tag hinzu, damit Personen mit demselben Tag oder ähnlichen Tags Dinge oder Personen empfehlen können, denen sie folgen können.
SADD Ein oder mehrere Mitglieder zur Sammlung hinzufügen SADD-Schlüsselwert
Rufen Sie die Anzahl der Mitglieder des Satzes ab. SCARD-Schlüssel.
Befehlsausführung
Tags
Likes oder Klicks, Favoriten usw.
können in einem Satz platziert werden, um

    Hash-Hash
  • Redis-Hash ist eine Zuordnungstabelle für Felder vom Typ Zeichenfolge (Feld) und Wert (Wert). Hashes eignen sich besonders gut zum Speichern von Objekten.
    • Befehlsverwendung
    • Befehl
  • Kurze Beschreibung

Verwendung

HSET
    Schlüssel-Wert-Paar hinzufügen
  • HSET-Hash-Schlüssel-Unterschlüssel1-Wert1
HGET Erhalten Sie den Wert des angegebenen Hash-Schlüssels Schlüssel im Hash vorhanden ist, dann entfernen Sie diesen SchlüsselHDEL-Hash-Schlüssel-Unterschlüssel1
  • 命令执行
127.0.0.1:6379> hset user name1 ycf
(integer) 1
127.0.0.1:6379> hset user email1 ycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
127.0.0.1:6379> hget user user
(nil)
127.0.0.1:6379> hget user name1
"ycf"
127.0.0.1:6379> hset user name2 xiaoycf
(integer) 1
127.0.0.1:6379> hset user email2 xiaoycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
5) "name2"
6) "xiaoycf"
7) "email2"
8) "xiaoycf@163.com"
  • 实战场景
    • 缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

Zset有序集合

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • 命令使用
命令 简述 使用
ZADD 将一个带有给定分值的成员添加到哦有序集合里面 ZADD zset-key 178 member1
ZRANGE 根据元素在有序集合中所处的位置,从有序集合中获取多个元素 ZRANGE zset-key 0-1 withccores
ZREM 如果给定元素成员存在于有序集合中,那么就移除这个元素 ZREM zset-key member1

更多命令请参考这里 

https://www.runoob.com/redis/redis-sorted-sets.html

  • 命令执行
127.0.0.1:6379> zadd myscoreset 100 ycf 90 xiaoycf
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaoycf"
2) "ycf"
127.0.0.1:6379> ZSCORE myscoreset ycf
"100"
  • 实战场景
    • 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

更多编程相关知识,请访问:编程视频!!

Das obige ist der detaillierte Inhalt vonLassen Sie uns ausführlich über die 5 grundlegenden Datentypen in Redis sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen