客户端缓存问题?

问题描述:

我想在客户端缓存数据。什么是可以使用的最佳算法/数据结构?客户端缓存问题?

案例1.要存储的数据需要极快的字符串搜索能力。
情况2.高速缓存的数据集可能很大。我不想爆炸客户端的内存使用情况,也是我不想做一个网络和磁盘访问调用减慢我的处理时间,在客户端

解决方案:

案例1:我认为suffix tree/Tries在这种情况下为您提供了一个很好的解决方案。

案例2:这两个问题在这里考虑的是:

  1. 存储大量数据以最小的内存消耗
  2. 不作任何网络电话来访问任何数据是不具备的高速缓存。 LRU缓存模型是我能想到的一种解决方案,但这并不妨碍我膨胀内存。

有什么办法可以写入文件并在不影响数据安全性的情况下访问?

让我知道,如果任何一点不明确。

编辑: 乔希,我知道我的要求是不现实的。为了缩小我的需求,我正在寻找使用LRU算法的商店。如果我们可以对该LRU进行动态大小配置并且对其进行最大限制,那将会很好。这将减少进入网络/数据库的呼叫数量并提供良好的性能。

如果这种LRU算法对压缩数据起作用,可以用少量开销(但少于网络调用)来解释压缩数据,它会好很多。

+0

你是什么意思的“快速字符串搜索” - 确切的字符串匹配或通配符匹配?如果你需要根据一个确切的字符串找到一个元素,那么一个hashtable可以做到这一点。 – Gandalf 2009-05-20 16:34:07

+0

如果你有大量的字符串集合,你还会更喜欢散列表吗? – pankajt 2009-05-20 21:04:24

查看所有可用的缓存框架/库 - 我发现Ehcache非常有用。您也可以让它只保留一些(最近的)内存,并在指定的内存使用情况下故障切换到磁盘。磁盘调用仍然会比网络调用快很多,并且避免占用所有内存。

Ehcache

不幸的是,我认为你的期望是不现实的。

保持内存使用率很小,但不会使磁盘访问调用意味着您无处可存储数据。

此外,要回答您关于安全性的问题,有没有客户端数据存储(假设您正在讨论网络应用程序)是“安全”的。您可以对其进行加密,但这会破坏您的速度要求,并且需要进行服务器端处理。所有存储在客户端和从客户端发送的信息都是可疑的。

也许如果你能更详细地描述问题,我们可以提出一些现实的解决方案。

+0

我已经更新了我的问题。也许,你是对的,我正在寻找的必须是两者的融合(网络通话和公羊)。不过,我正在寻找最佳算法。 – pankajt 2009-05-20 16:49:16