客户端缓存问题?

时间:2009-05-20 16:28:32

标签: performance algorithm data-structures caching

我想在客户端缓存数据。什么是最好的算法/数据结构?

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

解决方案:

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

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

  1. 以最少的内存消耗存储大数据
  2. 不进行任何网络调用以访问缓存中不可用的任何数据。 LRU缓存模型是我能想到的一种解决方案,但这并不妨碍我膨胀记忆。
  3. 有没有办法在不损害数据的情况下写入文件并进行访问(安全方面)?

    如果有任何不清楚的地方,请告诉我。

    修改 乔希,我知道我的要求是不现实的。为了缩小我的要求,我正在寻找使用LRU算法存储的东西。如果我们可以为此LRU提供最大限制的动态大小配置,那将是一件好事。这将减少进入网络/数据库的呼叫次数,并提供良好的性能。

    如果这个LRU算法适用于压缩数据,可以用轻微的开销(但不到网络调用)进行解释,那么它会好得多。

2 个答案:

答案 0 :(得分:1)

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

Ehcache

答案 1 :(得分:0)

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

保持较小的内存使用量,但也不会进行磁盘访问调用意味着您无法存储数据。

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

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