2014-11-06 64 views
1

目前的情況: -如何僅在數據更改時更新緩存?

我有一個C#代碼從MySQL服務器獲取數據並存儲在Redis的JSON格式 數據(從Strored程序數據)。這會更新緩存(redis)大約每半個小時,而不管mysql中的數據是否保持相同/不同(因爲我沒有關於數據更改的線索)。

要求: -

需要建立在同一個系統,而不是更新在預定的時間間隔高速緩存,即使數據是相同的,我需要改變,只有當數據被更改的緩存。

Couchbase: -

我聽到的couchbase意見。我對此很新。我可以將數據從mysql更改爲基於couchbase的JSON文檔。我的問題是,這個couchbase的意見是適合的嗎?

我的想法是

1. Data from MySql  => JSON in couchbase bucket 
2. StoredProcedure logic => couchbase views 

當從couchbase桶的數據發生變化,那麼這種觀點應該再次運行,否則應該從高速緩存,而無需再次運行視圖獲取。這是可能的意見?

如果不是,請告訴任何其他解決方案。

在此先感謝。

回答

2

在couchbase視圖中,可以手動或自動觸發更新。

對於自動觸發視圖更新,您可以通過兩種方式實現:定期更新和基於更改文檔數量的更新。您可以通過GET查詢查看當前設置:http://Administrator:[email protected]:8091/settings/viewUpdateDaemon 並通過POST請求更新它們。

查看更多詳情請參閱Couchbase服務器manual文檔。

另一種方法是手動觸發couchbase視圖更新。這可以通過使用stale=false參數或stale=update_after進行查詢來完成。 如果您通過stale=false視圖索引將被更新,您將獲得實際數據。如果您有大量文檔,此查詢可能需要很長時間。 如果您通過stale=update_after,視圖將返回當前數據(可能緩存),返回數據後將開始索引更新過程。這個查詢會很快,但你可以獲得緩存的數據,但如果你只是想觸發更新過程,這種方法已經足夠了。

以下是鏈接到docs欲瞭解更多信息。

所以你應該決定什麼方法更適合你,如果你需要更新的數據立即填充在緩存中,手動觸發會更好。如果你不需要這些,你可以使用自動方法並設置更新觸發器在一定數量的記錄更新之後運行reindex。

+0

謝謝你..我檢查了那些東西.. :) – shanmugharaj 2014-11-07 13:15:52

相關問題