2013-10-25 28 views
0

我想用數據倉庫將大量數據插入到redis中,並使用ruby。ram文件的redis大量插入與紅寶石?

redis-documentation我理解使用批處理命令的文件是正確的方法來做到這一點。

但是,我不想獲取所有數據,將它寫在我的驅動器上(也就是寫下批處理文件),以便它可以進一步發送到redis。

有沒有辦法跳過這一步?我雖然 創建一些可以傳遞給redis的「memfile」,而存儲在ram而不是硬盤上可能是一個答案,但我真的不知道它存在與否。

謝謝!

回答

1
  1. 您的數據是否足夠大,並且您的速度要求實際上要求足夠高,只是通過管線進行此操作的速度不夠快?誠然,批量處理整個事件,或者用Redis協議重寫它更快,但除非您的要求非常苛刻,否則不要在此浪費時間。我用流水線插入了幾百萬個HSET,花費了幾秒鐘的時間。至少在你浪費時間建立你可能不需要的東西之前試試這個。
  2. 你絕對需要在Ruby中做到這一點?如果您的要求真的如此極端以至於一條簡單的流水線速度不夠快,請嘗試將您的數據流傳輸至redis-cli --pipe。這看起來像這樣:sh getDataFromServer.sh | redis-cli --pipe,並且不需要你將大文件寫入磁盤(儘管如此,它可能會更快,因爲上面將取決於您的網絡速度)。

TL; DR;不要做你不需要的優化。如果在可預見的將來只需流水線就可以脫身,可以做到這一點。如果您在可預見的未來需要更多的速度,那麼做足夠的。 除非實際需要,否則不要編寫Redis協議或將Redis寫入磁盤。

+0

這聽起來像是一個很好的建議,謝謝! – aherve