In einem der meine Initialisierer muss ich einige Hashes aus einer Redis-Instanz abrufen. Aufgrund der Anzahl der Hashes und der Verbindungsschwächen kann das Laden jedoch ziemlich lange dauern. Da es im Initialisierer ist, ist die Anwendung nicht verfügbar, bis die Hashes alle geladen wurden.
Daher dachte ich, ich könnte die Initialisierung in einem Thread durchführen, so dass die Anwendung starten kann und dann die Hashes auf ihre auf Zeit geladen werden würde, wie Sie nicht wesentlich für die Anwendung sind.
Ich habe etwas Ähnliches versucht:
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
STORE = {}
Thread.abort_on_exception = true
Thread.new do
REDIS.keys.each do |key|
STORE[key] = REDIS[key]
end
end
Aber es funktioniert nicht und es gibt keine Fehlermeldungen :(
Irgendwelche Ideen?
Alex