2017-08-28 52 views
2

我有一個1億個整數鍵值對的靜態列表。我需要每秒對這些數據執行大約500次獲取。如果我想要延遲20毫秒,什麼是最佳解決方案。存儲1億個鍵值對

我應該在本地內存中緩存數據還是像Redis一樣使用全局緩存?

+0

數據本身有多大? – plalx

+0

似乎你需要〜760MB的內存來存儲這個數組。所以我建議使用本地內存而不是任何緩存子系統。視頻內存是PC上最快的內存。 –

+0

@plalx數據應該在2 GB左右 – DanMatlin

回答

0

我會使用Redis。原因如下:

  • 我假設正在從文件中讀取1億個整數。無論如何,你會削減它需要一段時間。將它存儲在Redis中將是一次性操作 - 因此,如果您的進程停止運行或您需要重新運行它,則不必重新讀取數據,也不必重新讀取數據。
  • Redis可以輕鬆管理500個操作/秒(我個人看到900k操作/秒,延遲小於1毫秒)。
  • 不知道您使用的是哪種語言,但某些腳本語言有很多行李,導致尺寸大於預期,特別是對於小值。將它存儲在Redis中(爲存儲大量數據而優化)往往更容易。

如果你打算在Redis中這樣做,那麼考慮使用HSET將數據存儲在一系列散列值中,而不是純粹的SET。