2017-10-10 107 views
0

我的問題是如何使用數據庫表中的新條目更新緩存? 我的緩存有我的卡桑德拉表數據假設直到下午3點。 直到那時用戶已購買3件商品,所以我的緩存中有3件商品與該用戶相關聯。更新點燃具有時間戳記數據的緩存

但過了某段時間(比如說30分鐘)如果用戶再購買2件商品怎麼辦?

由於我有3條緩存它不會從數據庫中查詢,如何在計算最終法案時得到這兩個新條目。

我有一個選擇是每15分鐘致電cache.loadCache(null, null)但有些地方這是不可行的每次打電話?

回答

1

這裏更好的選擇是不直接向Cassandra插入數據,但使用Ignite。它將有可能始終更新緩存中的數據,而無需與DB進行任何額外的同步。

但是,如果您每次都選擇運行loadCache,則可以將時間戳添加到數據庫中的對象並實現您自己的CacheStore,它將具有隻會從DB加載新數據的加法方法。 Here是文檔的鏈接,它將幫助您實現自己的CacheStore。

+0

設置'org.apache.ignite.cache.affinity.Affinity'似乎有點幫助完整,但不是我正在尋找的解決方案@Evgenii Zhuravlev,因爲我想只加載新數據 –

+0

和我雖然關於插入記錄直接進入之前點燃,但事情就像我們從多個地方插入數據,例如從android應用程序,ios應用程序,網站等。所以我必須改變每一件事情,或者提供我的團隊證書來這樣做(或讓他們休息)。 –

+0

我不是說你應該使用Affinity aware緩存存儲,我的意思是說你可以通過時間戳加載數據。我給了一個鏈接到文檔,所以你可以找到示例如何創建你自己的緩存存儲 –