Heim > Datenbank > Redis > Hauptteil

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

青灯夜游
Freigeben: 2021-11-23 18:56:55
nach vorne
2307 Leute haben es durchsucht

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"
Nach dem Login kopieren
  • 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)
RPUSHSchieben Sie den angegebenen Wert an das rechte Ende der Liste RPUSH-Schlüsselwert
Den angegebenen Wert an das linke Ende der Liste verschiebenLPUSH-Schlüsselwert
Einen Wert vom rechten Ende der Liste einfügen und den angezeigten Wert zurückgebenRPOP-Schlüssel
aus der Liste Einen Wert am linken Ende einfügen und den angezeigten Wert zurückgebenLPOP-Taste
Alle Werte der Liste im angegebenen Bereich abrufenLRANGE-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 Listenlpush+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)
      Nach dem Login kopieren
    • 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
Nach dem Login kopieren
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.
SADDEin 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"
Nach dem Login kopieren
  • 实战场景
    • 缓存: 能直观,相比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"
Nach dem Login kopieren
  • 实战场景
    • 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

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

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!

Verwandte Etiketten:
Quelle:juejin.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!