簡體   English   中英

在緩存鍵中存儲日期范圍

[英]Storing date range in cache keys

我的數據庫行有如下示例數據

例子

StoreId    ProductId  Eff_Date         End_Date       Discount  
123        456        01-01-2001       12-31-2001     10%  
123        456        01-01-2002       12-31-2002     15% 

當客戶進來時,我的代碼會檢查折扣,例如從表中選擇折扣,其中 storeId='123' 和 productId='456' 和 current_date<= EndDate 和 current_date>=Eff_date。

這工作得很好。

我們需要將上述數據存儲在緩存中。 我們如何將這些日期范圍存儲在緩存鍵中,以便當客戶購買商品時,我們可以命中正確的緩存鍵值對。

僅供參考,我們還沒有決定使用什么緩存框架。 請讓我知道什么緩存框架將支持此要求。

謝謝。

我正在嘗試實現類似的東西。 我正在嘗試從 Github 檢索多個數據並根據時間戳存儲它。 我會將它用作:文件名+時間戳作為鍵,文件結果作為值。

鑰匙

我建議使用 STOREID + PRODUCTID + End_DATE 作為鍵。 您可以使用分隔符連接所有這 3 個。

價值

折扣 %

解決方案

  • 從結束日期開始,您可以輕松獲得 Eff_date,即同年的 1 月 1 日
  • 您可以使用線程安全的 ConcurrentLinkedHashMap。
  • 現在從您的地圖中獲取 keySet 並使用一個函數來遍歷鍵並將鍵分解為 3 個單獨的變量,然后查找您的條件是否滿足它。
  • 例如。 你的要求適用於 2002 年 7 月 3 日的 Store 123 和 Product 456 折扣
  • 從地圖返回的鍵是'123/456/12-31-2002'
  • 在“/”上拆分,現在進行第一個和第二個條目以驗證商店和產品 ID 是否匹配
  • 然后檢查日期是否在 01-01-2002 和 12-31-2002 之間,如果是,那么您已經滿足所有條件並返回主密鑰。
  • 現在獲取此鍵的值。

這有點非常規,可能看起來很長,但會節省不必要的數據庫調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM