緩存數據爲了最大限度地減少我需要某種形式的高速緩存來存儲數據對數據庫查詢的次數。我現在的做法是一個散列表(以字符串作爲鍵,整數作爲值)。但我希望能夠檢測數據庫中的更新並替換我的「緩存」中的值。我正在尋找的東西,使我的存儲對在預設的時間範圍內無效,大概10-15分鐘。我將如何實現?在我可以使用的標準Java包中有什麼東西?更新在哈希表中
更新在哈希表中
回答
您可以使用現有的解決方案(見前面的回覆)
或者,如果你想一個挑戰,讓自己輕鬆緩存類(不推薦用於生產項目,但這是一個很好的學習經驗。
你將需要至少3名成員
存儲爲散列表對象A的高速緩存數據,
下一高速緩衝存儲器期滿日期
緩存到期間隔通過構造方法設置。
然後,只需有公開數據的獲取方法,驗證緩存過期狀態:
如果沒有過期,呼叫hastable的存取;
如果期滿,第一呼叫「數據加載」方法,該方法也被稱爲在構造函數中預先填充,然後調用哈希表的存取。
對於甚至更冷的緩存類(我已經實現了它在Perl在我的工作),你可以有更多的功能,可以實現:
單獨的每鍵緩存過期(加上總體緩存過期總數)
自動,半自動和單次數據重新加載(例如,立即重新加載整個緩存;重新加載由某個預定義查詢定義的一批數據,或重新加載單個數據元素單件郵件) 。後一種方法是非常有用的,當你的緩存有完全相同的鑰匙許多命中 - 這樣你就不需要每次3個凱茨說總是訪問到期重裝宇宙。
我會使用一些現有的解決方案(有很多緩存框架)。 ehcache是偉大的,它可以重置給定的時間跨度值和我打賭它可以做更多的事情(我只使用了)
你可以使用一個緩存框架像OSCache,EHCache,JBoss Cache,JCS ......如果你正在尋找的東西,遵循「標準」,選擇支持的JCache標準接口(使用javax的框架。緩存)又名JSR-107。
對於簡單的需求,如你所描述的,我會看EHCache或OSCache(我不是說它們是基本的,但它們很容易入手),它們都支持基於時間的到期。
如果我不得不選擇一種解決方案,我會推薦Ehcache,它有我的偏好,特別是現在它已經加入了兵馬俑。而爲了記錄,Ehcache通過net.sf.cache.jcache package
提供了JSR107的a preview implementation。
JSR-107規範是一個很好的閱讀。它真正處理我的問題。 – matpe 2009-09-20 07:04:57
- 1. c中的哈希表更新值
- 2. 哈希表映射 - 更新值
- 3. 未更新的哈希表值
- 4. 序列化哈希表未更新
- 5. 如何更新ABAP哈希表
- 6. 更新和在哈希表中創建新的元素
- 7. 哈希哈希在Perl中
- 8. 哈希表中的搜索哈希
- 9. 如何在哈希表的Arraylist中爲for循環生成新的哈希表
- 10. 如何在powershell中的哈希表中添加哈希表?
- 11. 更新窗口哈希(在URL)
- 12. 斯卡拉更新/在哈希表中創建值
- 13. 遍歷和更新散列哈希的哈希
- 14. 密碼哈希值,更新鹽和登錄哈希和PHPass
- 15. 哈希表vs哈希列表與哈希樹?
- 16. 如何在Racket中定義哈希表的哈希表?
- 17. 形式的哈希表 - 在Java中的<key,哈希表>
- 18. 返回在哈希表中
- 19. 哈希表在Java
- 20. 哈希中的數組中的Ruby訪問哈希(並添加新的哈希)
- 21. 財產在哈希表2個物體的進入一個新的哈希表
- 22. 在哈希中存儲哈希
- 23. 如何在哈希中存儲哈希哈希?
- 24. 哈希打印表哈希perl
- 25. 在javascript中列表的散列哈希哈希
- 26. 在javascript中構建哈希表和完美的哈希函數
- 27. 哈希表addFunction
- 28. Python哈希表
- 29. 如何更新循環中的C#哈希表?
- 30. PowerShell更新foreach循環中的哈希表值?
現在這將是一次學習經歷,但是當我需要一個真正的項目時,我會考慮Ehcahce和其他人。這一次規範並沒有要求這個特定的功能 - 這只是我想嘗試和做的事情(但從來沒有公開)。 – matpe 2009-09-20 06:13:50