首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在缓存键中存储日期范围

在缓存键中存储日期范围
EN

Stack Overflow用户
提问于 2014-02-19 19:59:20
回答 1查看 2.3K关注 0票数 2

我的db行有下面的示例数据

示例

代码语言:javascript
复制
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。

这很好用。

我们需要将上面的数据存储在缓存中。我们如何将这些日期范围存储在缓存密钥中,以便当客户购买某一项时,我们可以命中正确的缓存键值对。

FYI,我们还没有决定使用什么样的缓存框架。请让我知道什么缓存框架将支持这一要求。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-07-19 15:46:09

我正在尝试实现类似的东西。我正在尝试从Github中检索多个数据,并根据时间戳存储它。我将使用它作为:文件的名称+时间戳作为键,文件结果作为值。

钥匙

我建议使用STOREID + PRODUCTID + End_DATE作为密钥。您可以使用分隔符将所有这些3连接起来。

价值

折扣率

解决方案

  • 从结束日期起,您可以轻松地获得同年1月1日的Eff_date
  • 您可以使用线程安全的ConcurrentLinkedHashMap。
  • 现在,从您的映射中获取keySet,并使用一个函数循环键并将键分解为3个独立的变量,并确定您的条件是否满足它。
  • 例如:你的要求。适用于2002年7月3日商店123 &产品456支票折扣
  • 从地图返回的密钥是'123/456/12-31-2002‘。
  • 拆分"/",现在接受第一项和第二项,以验证商店和产品Id是否匹配
  • 然后检查日期是否介于01-01-2002和12-31-2002之间,如果是,那么您已经满足所有条件并返回主键。
  • 现在获取这个键的值。

这有点非常规,可能看起来很长,但可以节省不必要的DB调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21891078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档