Database Reference
In-Depth Information
count += 1
next if count == 1
isbn, _ , _ , title = line.split( " \t " )
next if isbn.empty? || title == " \n "
$redis.set(isbn, title.strip)
# Setzen Sie ein LIMIT, wenn nicht alle Daten eingefügt werden sollen
break if count >= LIMIT
end
puts " #{count} items in #{Time.now - start} seconds"
Das Bridging zwischen zwei oder mehr Servern verlangt nur kleinere Ände-
rungen an unserem ISBN-Client. Zuerst müssen wir die Datei redis/distri-
buted aus dem Redis-Gem einbinden.
require 'redis/distributed'
Dann ersetzen wir den Redis-Client durch Redis::Distributed und übergeben
ihm ein Array mit Server-URIs. Jeder URI besteht aus dem redis -Schema,
dem Server (localhost) und dem Port.
$redis = Redis::Distributed.new([
"redis://localhost:6379/",
"redis://localhost:6380/"
])
Die Ausführung des Clients erfolgt wie vorher.
$ ruby isbn _ cluster.rb isbn.tsv
Doch der Client übernimmt nun wesentlich mehr Arbeit, da er die Berech-
nung übernimmt, welche Schlüssel auf welchen Servern gespeichert wer-
den. Sie können überprüfen, ob die Schlüssel tatsächlich auf separaten Ser-
vern gespeichert werden, indem Sie den gleichen ISBN-Schlüssel von jedem
Server über die Kommandozeile abrufen. Nur ein Client liefert den Wert mit
GET zurück. Doch solange Sie Schlüssel abrufen, die über die gleiche Re-
dis::Distributed-Konfiguration gesetzt wurden, ruft der Client die Werte von
den richtigen Servern ab.
Bloomilter
Einen eindeutigen Begriff zu verwenden, ist eine ausgezeichnete Strategie,
wenn etwas online gefunden werden soll. Wenn Sie ein Buch mit dem Titel
The Jabbyredis schreiben, können Sie ziemlich sicher sein, dass jede Such-
maschine auf sie verlinkt. Wir wollen ein Skript entwickeln, mit dem wir
schnell überprüfen können, ob ein Wort in den Titeln unseres ISBN-Kata-
Search WWH ::




Custom Search