我有一個Java Webserivce查詢數據庫以將數據返回給用戶。數據庫查詢很昂貴,所以我有每60秒運行一次的Cron作業來緩存memcached中的當前數據。 數據元素在一段時間後「關閉」,這意味着它們不會被「獲取當前數據」請求返回。所以這些請求可以利用緩存的數據。如何緩存數據中的任意時間差異(java web服務)
客戶端使用名爲'since'的功能來獲取自特定時間戳(最後一個請求的時間戳)以來發生更改的所有數據。如果該數據在該時間戳之後關閉,則會返回任何關閉的數據。
如何有效存儲差異/自數據?對於每個自請求訪問數據庫的速度太慢(並且不能很好地擴展),但是由於客戶端可能要求任何時間,因此很難生成通用緩存。
我試過讓cron作業也構建一個自緩存。它會做'自''請求使自上次更新以來發生的所有變化,並試圖強制客戶端請求匹配cron作業請求後的時間戳。但是,cron花了多長時間,加上客戶端和玉米工作都不會每60秒運行一次,所以這些小的差異加起來就不一樣了。這最終導致一些數據關閉,但緩存或客戶端錯過了它。
我甚至不知道要尋找什麼來解決這個問題。
我最近發現了Ehcache,它具有很好的可搜索功能,所以我可以使用像DB這樣的緩存排序並查找我需要的記錄。另外,它記錄每個記錄的時間,以便我可以搜索「以來」。我想你的想法也會起作用。但是,答案肯定是Ehcache! – dontocsata 2012-01-25 00:16:27