Database Reference
In-Depth Information
Wie alle Redis-Befehle ist SETBIT mehr oder weniger selbstbeschreibend. Der
Befehl setzt ein einzelnes Bit (auf 0 oder 1) an einer bestimmten Stelle einer
Bitfolge, die bei 0 beginnt. Häufiger Anwendungsfall ist das mehrdimensio-
nale Flagging - ein paar Bits lassen sich schneller setzen, als man eine Folge
beschreibender Strings schreiben kann.
Wenn wir die Garnierung für einen Hamburger nachhalten wollen, können
wir jedem Typ eine Bitposition zuweisen, etwa Ketchup = 0, Senf = 1, Zwiebeln
= 2, Salat = 3. Ein Hamburger mit Senf und Zwiebeln lässt sich dann mit 0110
darstellen und in der Kommandozeile wie folgt setzen:
redis 127.0.0.1:6379> SETBIT my _ burger 1 1
(integer) 0
redis 127.0.0.1:6379> SETBIT my _ burger 2 1
(integer) 00
Später kann ein Prozess überprüfen, ob der Hamburger mit Salat oder Senf
sein soll. Wird eine 0 zurückgegeben, lautet die Antwort nein, bei einer eins
ja.
redis 127.0.0.1:6379> GETBIT my _ burger 3
(integer) 0
redis 127.0.0.1:6379> GETBIT my _ burger 1
(integer) 1
Die Bloomfilter-Implementierung nutzt dieses Verhalten zu ihrem Vorteil, in-
dem sie einen Wert als Multibit-Wert hasht. Sie ruft SETBIT X 1 für jede ge-
setzte Position in einem insert auf (X ist dabei die Bitposition) und prüft
die Existenz durch den Aufruf von GETBIT X bei include? - und gibt falsch
zurück, wenn eine GETBIT -Position 0 zurückgibt.
Bloomfilter sind ausgezeichnet, wenn man unnötigen Traffic zu einem lang-
sameren, tiefer liegenden System vermeiden will, sei es eine langsamere Da-
tenbank, eine begrenzte Ressource oder ein Netzwerk-Request. Wenn Sie mit
einer langsamen Datenbank von IP-Adressen arbeiten und alle neuen Be-
sucher Ihrer Site festhalten wollen, können Sie einen Bloomfilter nutzen,
um herauszufinden, ob die IP-Adresse in Ihrem System existiert. Liefert der
Bloomfilter ein Nein zurück, wissen Sie, dass die IP-Adresse hinzugefügt wer-
den muss und können entsprechend reagieren. Gibt der Bloomfilter ein Ja
zurück, kann die IP-Adresse im Backend vorhanden sein oder auch nicht,
und Sie brauchen einen zweiten Lookup, um ganz sicher zu gehen. Darum
ist die Berechnung der richtigen Größe wichtig. Gut dimensionierte Bloom-
filter können die Fehlerrate und die Wahrscheinlichkeit falscher Positive re-
duzieren (wenn auch nicht eliminieren).
Search WWH ::




Custom Search