Redis setbit

Redis setbit
„Die Zeichenfolge ist der grundlegendste Datentyp von Redis, der JSON -Objekte, Byte -Sequenzen, ein Array von Binärwerten und einfache Texte enthalten kann. Die einflussreichste Tatsache an Redis -Saiten ist, dass sie als Bitsvektor behandelt werden können. Daher können die Redis -Saiten verwendet werden, um Bitmaps darzustellen. Kurz gesagt, eine Redis -Bitmap kann als eine Reihe von Bits angesehen werden, die in einer Redis -Saite gespeichert sind.”

Jedes Bit in der Bitmap befindet sich mit einem Offset -Wert. Der Offsetwert eines bestimmten Bits wird basierend auf den X- und Y -Koordinaten berechnet. Die folgende mathematische Formel kann angewendet werden, um den Versatz eines bestimmten Bits zu berechnen.

Offset = Y -Koordinate * MAX_WIDTH_OF_MAP + X -Koordinate

Betrachten wir den folgenden Bitmap und wie der Offset -Wert für verschiedene Bits aussieht.

Die Werte für jedes Bit können mit dem Offset -Wert festgelegt werden. Redis bietet den Befehl setBit, um einen Bitwert auf 0 oder 1 festzulegen. In diesem Leitfaden werden wir die Syntax- und Anwendungsfälle des SetBit -Befehls diskutieren.

Der Befehl setBit

Der Befehl setBit wird verwendet, um Bits zu manipulieren, die bei einem gegebenen Versatz in einer Redis -Zeichenfolge gespeichert sind. Insbesondere legt dieser Befehl einen bestimmten Bit -Wert auf 1 oder 0 fest. Redis Bitmap kann bis zu 2^32-1 Offsets aufnehmen, was die maximale Größe einer Bitmap auf 512 MB begrenzt. Darüber hinaus beginnen die Bitmap -Offsets aus dem 0. Index.

Das Folgende ist die Syntax des SetBit -Befehls.

SetBit -Schlüsselversetztwert

Taste: Der Name des Redis -Schlüssels, der einen String -Wert speichert.

Offset: Der Offset -Wert des Bits.

Wert: Der Wert des Bits. Dies kann 1 oder 0 sein.

Wenn der Schlüssel nicht vorhanden ist, erstellt der Befehl setBit einen neuen String -Wert und setzt den Bitwert auf einen angegebenen Offset. Darüber hinaus arbeitet der SetBit -Befehl in O (1) Zeitkomplexität, die ein wesentlich schneller Prozess ist. Dies kann geringfügig variieren, wenn wir das 2^31-1-Bit in einer Bitmap einstellen möchten, wenn die angegebene Taste nicht vorhanden ist oder einen sehr kleinen Stringwert speichert. Es würde einige Zeit dauern.

Der Befehl setBit gibt den ursprünglichen Bitwert zurück, der am Offset in der in einer angegebenen Schlüssel gespeicherten Zeichenfolge gespeichert ist.

Anwendungsfall - Dateisystemberechtigungen mit Redis Bitmap

Nehmen wir an, dass ein Unix-ähnliches Betriebssystem Dateiberechtigungen mithilfe von Bitmaps verwaltet. Die Berechtigungen für eine bestimmte Datei/einen bestimmten Ordner werden in einer Bitmap wie folgt gespeichert, schreiben und ausführen.

Setzen wir die schreibgeschützten Berechtigungen auf die Datei mit dem Namen „a.txt". Um es klar zu machen, wird die Read -Erlaubnis durch das Bit am 0. Offset gekennzeichnet. Daher werden wir den 0. Offset auf 1 einstellen, indem wir den Befehl setBit wie folgt aufrufen.

SetBit -Datei: ID: 100: Name: a.txt 0 1

Überprüfen Sie, ob der 0. Offset ordnungsgemäß mit dem Befehl getbit festgelegt wurde.

Getbit -Datei: ID: 100: Name: a.txt 0

Wir müssen die beiden anderen Offsets nicht explizit einstellen, da der Standard -Bitwert eines Bits 0 beträgt. Daher sollten die 1. und 2. Offset -Bits implizit auf 0 eingestellt werden, wie im Folgenden gezeigt.

In ähnlicher Weise können wir alle drei Lesen, Schreiben und Ausführen von Berechtigungen im Ordner ABC wie folgt einstellen. Mehrere Bit.

SetBit -Ordner: ID: 3: Name: ABC 0 1
SetBit -Ordner: ID: 3: Name: ABC 1 1
SetBit -Ordner: ID: 3: Name: ABC 2 1

Überprüfen Sie die Werte von 3 Bits mit dem Befehl getbit.

Getbit -Ordner: ID: 3: Name: ABC 0
Getbit -Ordner: ID: 3: Name: ABC 1
Getbit -Ordner: ID: 3: Name: ABC 2

Darüber hinaus können wir mit dem Befehl zum Redis -GET mithilfe der String -Darstellung einer bestimmten Bitmap abgerufen werden. Wie Sie in der folgenden Ausgabe sehen können, wurde der Hex -Wert zurückgegeben.

Der gleiche Dezimalwert wäre 224.

Insgesamt kann der SetBit -Befehl effektiv verwendet werden, um das Bitmap -Bit zu manipulieren.

Abschluss

Zusammenfassend wird der Befehl setBit verwendet. Wie bereits erwähnt, kann eine Redis -Saite als eine Reihe von Bits behandelt werden, die eine Bitmap -Datenstruktur darstellen können. Außerdem arbeitet der Befehl setBit in Bitmaps in O (1) Zeitkomplexität. Wie Sie in den Anwendungsfällen gesehen haben, können mehrere Bits eingestellt werden, indem Sie den Befehl setBit mehrmals aufrufen. Mit Hilfe des Befehls von Redis -Get kann der String -Wert der Bitmap abgerufen werden.