【问题标题】:Springboot Ehcache load dataSpringboot Ehcache 加载数据
【发布时间】:2018-11-25 09:08:30
【问题描述】:
  • 使用 SpringBoot、Maven、MongoDB、Ehcache 的服务。

  • 服务需要快速且频繁的缓存服务器,所以最终我选择了 Ehcache。

  • 所有缓存的调用频率几乎相同,因此在这种情况下没有冷热数据。

  • MongoDB中的原始数据每天都会通过定时服务更新,所以我的做法是每天将所有更新的数据加载到Ehcache中。

  • 此数据中的每个项目都相互关联,就像您使用一个来查找另一个的相关 Id。因此,如果一个缓存已更新,而另一个缓存没有更新,那么您将找不到这些相关的 Id。我想避免这种情况。

所以我的问题是有没有办法实现这样的功能,比如使用两个 Ehcache 服务器之类的? 即当一个在使用时,另一个可以从 MongoDB 加载数据。更新完成后,切换到更新的那个。所以每天 MongoDB 数据更新时,我必须更新 Ehcache 数据,它不会影响我当前的缓存。这只是我的一个想法。另一个想法是类似于 SQL 事务。有没有其他方法可以实现这一点。

请指教。

【问题讨论】:

    标签: spring-boot ehcache


    【解决方案1】:

    好问题。我看到了两种方法。

    一种是使用应用程序锁。当您准备好重新加载缓存时,您会阻止对它的访问并执行此操作。没有办法同时清除所有缓存。问题是在更新期间一切都会被阻止。

    另一种方法是使用其他缓存。因此,您使用新数据加载新缓存,然后交换新缓存和过期缓存。此解决方案的问题在于,在给定时刻,您将占用两倍的内存,因为两个缓存都在内存中。

    【讨论】:

    • 是的。我更喜欢第一个解决方案,因为毕竟内存成本太高了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多