2009-05-20 267 views
1

我想在客戶端緩存數據。什麼是可以使用的最佳算法/數據結構?客戶端緩存問題?

案例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

回答

1

查看所有可用的緩存框架/庫 - 我發現Ehcache非常有用。您也可以讓它只保留一些(最近的)內存,並在指定的內存使用情況下故障切換到磁盤。磁盤調用仍然會比網絡調用快很多,並且避免佔用所有內存。

Ehcache

0

不幸的是,我認爲你的期望是不現實的。

保持內存使用率很小,但不會使磁盤訪問調用意味着您無處可存儲數據。

此外,要回答您關於安全性的問題,有沒有客戶端數據存儲(假設您正在討論網絡應用程序)是「安全」的。您可以對其進行加密,但這會破壞您的速度要求,並且需要進行服務器端處理。所有存儲在客戶端和從客戶端發送的信息都是可疑的。

也許如果你能更詳細地描述問題,我們可以提出一些現實的解決方案。

+0

我已經更新了我的問題。也許,你是對的,我正在尋找的必須是兩者的融合(網絡通話和公羊)。不過,我正在尋找最佳算法。 – pankajt 2009-05-20 16:49:16