2017-08-28 71 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。