我工作的一個項目,我想出來的天空爲樂趣,以更好地瞭解二郎,藥劑和功能性數據結構。我正在問這個問題,以獲得有關以下場景的最佳數據結構的一些洞察,以作爲學習練習,並查看標準庫中是否存在滿足以下場景的單個理想候選者。最佳的數據結構基於價值
我希望保存在內存中存儲。我想知道哪種後臺數據結構適合以下場景的用途:
- 可能有數萬(或更多)條目。
- 頻繁插入和更新每個條目。
- 週期性掃描(認爲GC運行)刪除無用的項目(例如項目未更新最後X秒內)
- 查詢產生子集(例如在過去的X秒內全部更新)
一些背景資料:
- 客戶端服務器方案,其中每個連接的客戶端對應於後備存儲器,其中鍵是客戶端ID的單個條目。
- 每個客戶端會每隔x秒發送更新的數據。 (經常)
- 當客戶端斷開後臺存儲中的項目時將被刪除。如果它沒有在過去的X秒更新
- 後備存儲器中的每個條目也將被刪除。 (要處理刪除舊數據時,沒有收到斷開連接)目前我使用的是HashDict支持的過程,是一個最簡單的一件事,明知有可能是一個潛在的大量條目
,而這將允許快速隨機訪問更新,因爲密鑰將對應於客戶端ID。目前的值是一個Map,它本身將包含「last_updated」時間。
con_cache項目看起來不錯,會喜歡閱讀代碼。謝謝您的幫助。 – holsee 2014-09-04 15:19:27
謝謝!爲了完全清楚起見,我認爲第一種方法(客戶特定流程+ gproc發現+進程中超時)更具慣用性,我會先嚐試這種方法。事實上,回想起來,我相信這種方法可能更適合con_cache源於的系統。唯一的缺點是它需要更多的樣板,而con_cache已經實現了一些東西(比如GCing和通知)。 – sasajuric 2014-09-04 15:38:04