关于缓存 缓存是实际工作中非常常用的一种提高性能的方法。而在java中,所谓缓存,就是将程序或系统经常要调用的对象存在内存中,再次调用时可以快速从内存中获取对象,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。 在增删改查中,数据库查询占据了数据库操作的80%以上,而非常频繁的磁盘I/O读取操作,会导致数据库性能极度低下。而数据库的重要性就不言而喻了:
在系统架构的不同层级之间,为了加快访问速度,都可以存在缓存 spring cache 特性与缺憾 现在市场上主流的缓存框架有ehcache、redis、memcached。spring cache可以通过简单的配置就可以搭配使用起来。其中使用注解方式是最简单的。 Cache 注解 从以上的注解中可以看出,虽然使用注解的确方便,但是缺少灵活的缓存策略, 缓存策略:
项目中可能有很多缓存的TTL不相同,这时候就需要编码式使用编写缓存。 条件缓存 根据运行流程,如下@Cacheable将在执行方法之前( #result还拿不到返回值)判断condition,如果返回true,则查缓存; 如下@CachePut将在执行完方法后(#result就能拿到返回值了)判断condition,如果返回true,则放入缓存 如下@CachePut将在执行完方法后(#result就能拿到返回值了)判断unless,如果返回false,则放入缓存;(即跟condition相反) 如下@CacheEvict, beforeInvocation=false表示在方法执行之后调用(#result能拿到返回值了);且判断condition,如果返回true,则移除缓存; 小试牛刀,综合运用: 配置 ehcache 与 redis spring cache集成ehcache,spring-ehcache.xml主要内容: spring cache集成redis,spring-redis.xml主要内容: 项目中注解缓存只能配置一个,所以可以通过以下引入哪个配置文件来决定使用哪个缓存。 当然,可以通过其他配置搭配使用两个缓存机制。比如ecache做一级缓存,redis做二级缓存。 更加详细的使用与配置,可以参考项目中spring-shiro-training中有关spring cache的配置:https://git.oschina.net/wangzhixuan/spring-shiro-training.git |
|
来自: Levy_X > 《JAVAWEB学习资料》