我正在开发一个Spring应用程序,该应用程序具有数百个用户,但是有100-1百万条数据作为响应发送给每个用户。因此,性能对我们来说是一个大问题。我们利用Java,JSP,jQuery,HTML和CSS。对于我正在做的工作,我正在构建一个通知系统。例如,如果用户的商品过期了,那么我们会向该用户发送通知。但是,问题是:
我现在的想法是使用一个线程,该线程将连续检查数据库中是否有新更新的项目,如果有新项目,我们将更新缓存对象的表示形式。用户将从缓存中检索数据。
我应该如何用Spring来实现呢?我应该使用什么数据结构?我应该为线程和缓存对象使用什么?我应该为此使用WeakHashMap吗?
注意:我们的应用程序不支持注释驱动的mvc。
Spring在3.x RELEASE中引入了Cache的抽象。您可以在Spring官方文档(由于某种原因该站点今天已关闭:)中,或在此文章中阅读有关此内容的信息。
http://dzone.com/articles/spring-cache-abstraction-0
通过这种抽象,启用缓存所需要做的就是向服务中添加一些注释,例如
为缓存增加价值
@Cacheable("customers")
public Customer findCustomer(long customerId) {...}
删除缓存中的值
@CacheEvict(value="customer", allEntries = true)
public void removeAllCustomers(long customerId) {...}
并启用可缓存的spring配置。春季魔术AOP负责其余的工作。作为Spring的所有组件,您可以使用所需的任何实现,并且开箱即用地支持许多实现。而且您不需要为此更改代码分配,只需根据需要添加注释:)
除了Spring本机支持外,还有Guava Cache
https://code.google.com/p/guava-libraries/wiki/CachesExplained
您可以选择所需的内容,并通过例如指定高速缓存密钥生存期来实现您的要求,因此它将在特定时间后从高速缓存中删除,并在下一次调用时重新计算。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句