Inhaltsverzeichnis
摘要
redisObject
类型与编码介绍
String
Liste
Sammlung
Geordneter Satz
Hash-Tabelle
Grundlegende Prinzipien von Typen und Codierung
Codierungskonvertierung
Datenstruktur
Heim Datenbank Redis Was sind die Prinzipien und die Verwendung der Redis-Typ- und Kodierungskodierung?

Was sind die Prinzipien und die Verwendung der Redis-Typ- und Kodierungskodierung?

May 29, 2023 pm 04:21 PM
redis type encoding

    摘要

    Redis是一款开源的高性能key-value数据库,广泛应用于各种场景。在Redis中,数据类型(type)和编码(encoding) 是非常重要的概念。本篇博客将详细介绍Redis支持的数据类型以及相应的编码方式和底层实现原理。

    要查看Redis某个key的内部编码,可以使用Redis命令OBJECT ENCODING key。其中,key是你想要查询的键名。例如,如果你想要查询名为mykey的键的内部编码,可以执行以下命令:

    127.0.0.1:6379> object encoding mykey  // 查看某个Redis键值的编码
    Nach dem Login kopieren

    redisObject

    在 Redis 中,redisObject 是 Redis 中最基本的数据结构之一。redisObject 用于表示 Redis 中的键值对中的值,它可以是字符串、整数、列表、哈希表等任意一种 Redis 数据类型。

    redisObject 的定义如下:

    typedef struct redisObject {
    
        // 类型
        unsigned type:4;
    
        // 编码方式
        unsigned encoding:4;
    
        // 引用计数
        int refcount;
    
        // 指向实际值的指针
        void *ptr;
    
    } robj;
    Nach dem Login kopieren
    • type:表示 redisObject 的类型。

    • encoding:表示 redisObject 的编码方式。

    • refcount:表示当前 redisObject 被引用的次数。

    • ptr: ptr字段则是一个指针,指向实际的 Redis 对象。

    Redis源码encoding取值有如下几种:

    #define OBJ_ENCODING_RAW 0        /* Raw representation */
    #define OBJ_ENCODING_INT 1        /* Encoded as integer */
    #define OBJ_ENCODING_HT 2         /* Encoded as hash table */
    #define OBJ_ENCODING_ZIPMAP 3     /* Encoded as zipmap */
    #define OBJ_ENCODING_LINKEDLIST 4 /* No longer used: old list encoding. */
    #define OBJ_ENCODING_ZIPLIST 5    /* Encoded as ziplist */
    #define OBJ_ENCODING_INTSET 6     /* Encoded as intset */
    #define OBJ_ENCODING_SKIPLIST 7   /* Encoded as skiplist */
    #define OBJ_ENCODING_EMBSTR 8     /* Embedded sds string encoding */
    #define OBJ_ENCODING_QUICKLIST 9  /* Encoded as linked list of ziplists */
    Nach dem Login kopieren

    类型与编码介绍

    Redis支持五种主要的数据类型:字符串(string)、列表(list)、集合(set)、有序集合(sorted set)和哈希(hash)。每种数据类型都有对应的编码方式。

    数据类型与编码方式总览如下:

    数据类型 编码方式
    字符串 int、embstr、raw
    哈希表 ziplist、hashtable
    列表 ziplist、linkedlist、quicklist
    集合 intset、hashtable
    有序集合 ziplist、skiplist

    String

    String ist der grundlegendste Datentyp in Redis und wird normalerweise zum Speichern von Text- oder Binärdaten verwendet. Redis unterstützt zwei Codierungsmethoden:

    • Wenn in Redis eine Zeichenfolge als Ganzzahl dargestellt werden kann, wird sie in eine Ganzzahl konvertiert und mithilfe der Int-Codierung gespeichert. Die Vorteile der Int-Codierung sind geringer Speicherplatz und hohe Betriebseffizienz. Der Nachteil besteht darin, dass nur Ganzzahlen gespeichert werden können und keine Zeichenfolgenoperationen unterstützt werden.

    • embstr (embstr-codierte Zeichenfolge): Speichern Sie Zeichenfolgen mit einer Länge von weniger als 44 Bytes. Wenn eine Zeichenfolge relativ kurz ist, kann die Verwendung dieser Codierungsmethode zum Speichern den Speicherverbrauch reduzieren.

    • raw (rohcodierte Zeichenfolge): Speichern Sie Zeichenfolgen mit einer Länge von mehr als 44 Bytes. Wenn eine Zeichenfolge relativ lang ist, wird diese Codierungsmethode zum Speichern verwendet.

    Liste

    Eine Liste ist eine geordnete Sammlung von Zeichenfolgen, in der Elemente hinzugefügt, geändert und gelöscht werden können. Redis unterstützt drei Codierungsmethoden:

    • ziplist: Vor der Redis3.2-Version, Wenn die Länge jeder Zeichenfolge in der Liste weniger als 64 Byte beträgt und die Anzahl der Elemente in der Liste weniger als 512 beträgt, , die Listenobjekt Verwenden Sie die Ziplist-Kodierung und in anderen Fällen die Linkedlist-Kodierung. ziplist ist eine kompakte, komprimierte Listenstruktur, die Speicherplatz spart. Gut für kleine Listen.

    • Linkedlist ist eine Art Datenstruktur, die Listen jeder Größe durch eine verknüpfte Listenstruktur unterstützt. Der Speicherbedarf nimmt jedoch mit zunehmender Länge der Liste zu.

    • Quicklist: Quicklist wurde in Redis Version 3.2 eingeführt und ist eine aus mehreren Ziplists bestehende Listenstruktur, die nicht nur die Leistung sicherstellen, sondern auch Speicher sparen kann. Geeignet für große Listen.

    Sammlung

    Eine Sammlung ist eine Reihe ungeordneter Zeichenfolgensammlungen, die das Hinzufügen, Löschen und Abfragen von Elementen unterstützen. Redis unterstützt zwei Codierungsmethoden:

    • intset: Wenn die Elemente in der Sammlung alle Ganzzahlen sind, verwendet Redis die Intset-Codierung zum Speichern von . Die Vorteile der Intset-Codierung sind geringer Speicherplatz und hohe Betriebseffizienz.

    • hashtable: Wenn die Elemente in der Sammlung Zeichenfolgen enthalten, speichert Redis sie in der Hashtable-Codierung . Der Vorteil der Hashtable-Codierung besteht darin, dass sie Elemente jeden Typs speichern kann und String-Operationen unterstützt. Der Nachteil besteht darin, dass der Speicherplatz relativ groß und die Betriebseffizienz relativ gering ist.

    Geordneter Satz

    Ungeordneter Sammlung von Zeichenfolgen wird eine Punktzahl zugewiesen, sodass sie entsprechend der Punktzahl sortiert werden können und einen geordneten Satz bilden. Redis unterstützt zwei Kodierungsmethoden:

    • ziplist: Speichern Sie mit der Ziplist-Kodierung weniger als 128 Elemente und alle Elementgrößen betragen weniger als 64 Byte. Ziplist ist eine kompakte, komprimierte Listenstruktur, die für kleine geordnete Sammlungen geeignet ist.

    • skiplist: Skiplist ist eine Skiplist-Struktur, die eine schnelle Abfrage und Sortierung unterstützt. Geeignet für große, geordnete Sammlungen.

    Hash-Tabelle

    Eine Hash-Tabelle ist eine Sammlung von Schlüssel-Wert-Paaren, wobei jedem Schlüssel ein Wert zugeordnet ist. Redis unterstützt zwei Codierungsmethoden:

    • ziplist: Die Zeichenfolgenlänge aller im Hash-Objekt gespeicherten Schlüsselwerte beträgt weniger als 64 Byte und die Anzahl der Schlüssel-Wert-Paare beträgt weniger als 512 , Redis speichert sie in Ziplist-Kodierung. Die Vorteile der Ziplist-Kodierungsmethode sind geringer Speicherplatz und hohe Betriebseffizienz. Der Nachteil besteht darin, dass schnelle Schlüsselsuchvorgänge nicht unterstützt werden.

    • Zusätzlich zu den oben genannten Bedingungen verwendet Redis die Hash-Tabellenkodierung zur Speicherung. Der Vorteil der Hashtable-Codierung besteht darin, dass sie schnelle Schlüsselsuchvorgänge unterstützt. Der Nachteil besteht darin, dass der Speicherplatz relativ groß und die Betriebseffizienz relativ gering ist.

    Grundlegende Prinzipien von Typen und Codierung

    Nachdem wir die von Redis unterstützten Datentypen und Codierungsmethoden verstanden haben, werfen wir einen Blick auf die zugrunde liegenden Implementierungsprinzipien.

    Codierungskonvertierung

    In Redis verfügt jedes Schlüssel-Wert-Paar über eine Typkennung, die zur Angabe des im Schlüssel-Wert-Paar gespeicherten Datentyps verwendet wird. Wenn wir einen Schlüssel bearbeiten, kodiert Redis das Schlüssel-Wert-Paar basierend auf der aktuellen Kodierung des Schlüssels und der für die Operation erforderlichen Kodierung.

    Wenn wir beispielsweise Inhalte an einen String anhängen und die aktuelle Codierung des Strings unformatiert ist, der neue Inhalt jedoch mit der Embstr-Codierung gespeichert werden kann, konvertiert Redis die Codierung des Strings vom rohen forembstr.

    Datenstruktur

    Redis verwendet eine Vielzahl klassischer Datenstrukturen, um verschiedene Datentypen zu implementieren, und beschränkt sich nicht nur auf Codierungsmethoden. Beispielsweise werden Redis-Listen und Hash-Tabellen mithilfe verknüpfter Listenstrukturen implementiert. Skip List ist eine effiziente Datenstruktur, die in geordneten Sammlungen verwendet wird.

    Diese Datenstrukturen wurden sorgfältig entworfen und optimiert, um den Anwendungsanforderungen in verschiedenen Szenarien gerecht zu werden. Beispielsweise eignet sich die verknüpfte Listenstruktur für Situationen, in denen Elemente häufig hinzugefügt und gelöscht werden müssen, während die Struktur der übersprungenen Liste besser für Sortier- und Suchvorgänge geeignet ist.

    Das obige ist der detaillierte Inhalt vonWas sind die Prinzipien und die Verwendung der Redis-Typ- und Kodierungskodierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    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

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    So erstellen Sie den Redis -Clustermodus So erstellen Sie den Redis -Clustermodus Apr 10, 2025 pm 10:15 PM

    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 implementieren Sie die zugrunde liegenden Redis So implementieren Sie die zugrunde liegenden Redis Apr 10, 2025 pm 07:21 PM

    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.

    Was tun, wenn Redis-Server nicht gefunden werden kann Was tun, wenn Redis-Server nicht gefunden werden kann Apr 10, 2025 pm 06:54 PM

    Schritte zur Lösung des Problems, das Redis-Server nicht finden kann: Überprüfen Sie die Installation, um sicherzustellen, dass Redis korrekt installiert ist. Setzen Sie die Umgebungsvariablen Redis_host und Redis_port; Starten Sie den Redis-Server Redis-Server; Überprüfen Sie, ob der Server Redis-Cli Ping ausführt.

    So sehen Sie alle Schlüssel in Redis So sehen Sie alle Schlüssel in Redis Apr 10, 2025 pm 07:15 PM

    Um alle Schlüssel in Redis anzuzeigen, gibt es drei Möglichkeiten: Verwenden Sie den Befehl keys, um alle Schlüssel zurückzugeben, die dem angegebenen Muster übereinstimmen. Verwenden Sie den Befehl scan, um über die Schlüssel zu iterieren und eine Reihe von Schlüssel zurückzugeben. Verwenden Sie den Befehl Info, um die Gesamtzahl der Schlüssel zu erhalten.

    So sehen Sie die Versionsnummer der Redis So sehen Sie die Versionsnummer der Redis Apr 10, 2025 pm 05:57 PM

    Um die Redis -Versionsnummer anzuzeigen, können Sie die folgenden drei Methoden verwenden: (1) Geben Sie den Info -Befehl ein, (2) Starten Sie den Server mit der Option --version und (3) die Konfigurationsdatei anzeigen.

    So lesen Sie den Quellcode von Redis So lesen Sie den Quellcode von Redis Apr 10, 2025 pm 08:27 PM

    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.

    So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

    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).

    So verwenden Sie Redis Zset So verwenden Sie Redis Zset Apr 10, 2025 pm 07:27 PM

    Redis bestellte Sets (ZSETs) werden verwendet, um bestellte Elemente und Sortieren nach zugehörigen Bewertungen zu speichern. Die Schritte zur Verwendung von ZSET umfassen: 1. Erstellen Sie ein Zset; 2. Fügen Sie ein Mitglied hinzu; 3.. Holen Sie sich eine Mitgliederbewertung; 4. Holen Sie sich eine Rangliste; 5. Holen Sie sich ein Mitglied in der Rangliste; 6. Ein Mitglied löschen; 7. Holen Sie sich die Anzahl der Elemente; 8. Holen Sie sich die Anzahl der Mitglieder im Score -Bereich.

    See all articles