使用SpringBoot,Maven,MongoDB,Ehcache的服务。
服务需要快速且经常使用的缓存服务器,所以最终我选择了Ehcache。
几乎将以相同的频率调用所有缓存,因此在这种情况下不会有冷数据。
MongoDB中的原始数据每天都会通过计时器服务进行更新,因此我要做的就是每天将所有更新的数据加载到Ehcache。
此数据中的每个项目彼此之间都有联系,就像您使用一项来查找另一项的相关ID一样。因此,如果一个缓存已更新,而另一缓存未更新,则您将找不到这些相关的ID。我想避免这种情况。
所以我的问题是,有没有办法实现这样的功能,比如使用两个Ehcache服务器或其他东西?即当一个在使用时,另一个一个可以从MongoDB加载数据。更新完成后,将其切换到更新的版本。因此,每天更新MongoDB数据(我必须更新Ehcache数据)时,它都不会影响我当前的缓存。那只是我的想法。另一个想法是类似于SQL事务。还有其他方法可以实现这一目标。
请告知。
答案 0 :(得分:0)
好问题。我看到两种方式。
一种是使用应用程序锁。准备好重新加载缓存时,您可以阻止对其进行访问并执行该操作。没有办法同时清除所有缓存。问题在于,更新期间所有内容都会被阻止。
另一种方法是使用其他缓存。因此,您需要用新数据加载新缓存,然后交换新缓存和过期的缓存。这种解决方案的问题在于,由于两个缓存都在内存中,因此在给定的时刻您将占用两倍的内存。