Der Redis-Server verfügt standardmäßig über 16 Datenbanken, und eine Datenbank entspricht einer RedisDB-Datenstruktur.
typedef struct redisDb { dict *dict; dict *expires; dict * blocking_keys; dict * ready_keys; dict * watched_keys; ...... }
dict: Schlüsselraum-Hash-Tabelle, die zum Speichern aller Schlüssel-Wert-Paare verwendet wird
expires: Ablaufzeit-Hash-Tabelle, in der die Ablaufzeit von Schlüsseln gespeichert wird 🎜#ready_keys: Entsperrschlüssel und entsprechende Clients, relativ zum blocking_keys-Attribut
watched_keys: Überwachungsschlüssel und entsprechende Clients, hauptsächlich für Transaktionen verwendet#🎜 🎜##🎜🎜 #
Die Schlüsselwerte von Redis sind alle redisObject-Objekte. Jedes Mal, wenn wir ein neues Schlüssel-Wert-Paar in der Redis-Datenbank erstellen, wird ein redisObject generiert Objekt für den Schlüsselnamen und ein redisObject-Objekt für den Schlüsselwert Beschreibung
type
Wenn es sich um LRU handelt, wird die letzte Zugriffszeit angezeigt. Wenn es sich um LFU handelt, werden die oberen 16 Bits verwendet, um die Zugriffszeit auf Minutenebene anzuzeigen, und die niedrigen 8 Bits werden verwendet, um die Zugriffszeit anzuzeigen Geben Sie die Zugriffshäufigkeit an. Je größer die Basis, desto schwieriger ist es, die Zugriffszeit zu erhöhen. (Beiden gemeinsam) Die Zugriffszeit ist ein Modulo einer Zahl, und die aktuelle Zeit ist ebenfalls modulo. Wenn die aktuelle Zeit größer als die Zugriffszeit ist, ist sie die Differenz zwischen den beiden Zahlen Zugriffszeit, es handelt sich um die aktuelle Zeit plus den Modulus und die Zugriffszeit. 🎜🎜#Der Anfangswert ist 1, was in praktischen Anwendungen wenig Referenzbedeutung hat# 🎜🎜# | ptr | |
---|---|---|
dict, läuft ab usw., Zeiger zeigen auf dieselbe Adresse | ||
Ändern Sie die Speichereliminierungsstrategie | Objekt-Leerlaufzeitschlüssel # Gibt die Leerlaufzeit des Schlüssels zurück, was eine ungefähre Beschreibung der Zeit seit dem letzten Lesen des Schlüssels ist geschrieben. Es ist im LFU-Modus nicht verfügbar int-Typ und ptr zeigen direkt auf die int-Typ-Adresse | embstr und raw |
Wie Sie sehen können, ähnelt # 🎜🎜#SDS der ArrayList-Struktur von Java | . Es weist außerdem eine Anfangslänge zu und erweitert diese, wenn die Länge überschritten wird .Redis legt fest, dass die Länge der Zeichenfolge 512 MB nicht überschreiten darf. | Wenn die Länge besonders kurz ist, verwenden Sie zum Speichern das Embstr-Formular. Wenn die Länge 44 Bytes überschreitet, verwenden Sie zum Speichern das Rohformat. |
dict | dict (Codierung ist Hashtabellentyp, Wörterbuch) entsprechend der Hash-, Set- und Zset-Sammlung (wird zum Speichern der Zuordnung zwischen Wert und Punktzahl verwendet). | |
. |
Das obige ist der detaillierte Inhalt vonWas ist das Prinzip der Redis-Datenstruktur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!