查找Java字符串对的数据的快速且可扩展的方法?

时间:2013-09-09 15:02:11

标签: java caching lookup

我需要能够从Java程序中查找字符串对(例如URL)的信息。例如,信息本身很小,只是一个数字。然而,将有数百万和可能数十亿的字符串,我需要查找其中任何两个字符串的信息,我需要为大量的对进行此操作,每秒钟的次数非常多。

理想情况下,这可以用作缓存:如果还没有存储特定的字符串对,我需要存储与之关联的数字。要存储在缓存中的对的总数将远小于可能的对的总数。 或者,也可以通过定期添加新批次对来完成,甚至可以重新创建数据结构。第一个优先目标是在不占用大量内存的情况下快速查找。

这应该尽可能快,但因为缓存中的对数可能非常大,我认为它不应该是依赖于内存中加载的所有内容的方法。

任何想法如何解决这个问题?我很确定之前已经解决了好几千次,但我宁愿尝试从一开始就做到这一点。

1 个答案:

答案 0 :(得分:3)

大多数解决方案都假设a)你有足够的内存用于任务或b)你正在使用数据库。如果你想快速查找访问,我建议你确保你有足够的内存。您可以通过将URL编码为UTF-8或ISO-8859-1(每个字符使用一个字节)来使URL更紧凑

另一种选择是使用快速SSD和内存映射文件,但这并非易事。

即使值很小,您仍然需要存储密钥以确保查找正确。

使用100个字节的十亿个字符串每个需要100 GB,这不像以前那么大。当然,100 GB的SSD不会花费太多。