简述
在web系统中,常见的加速系统访问的手段有对页面静态化,缓存页面,缓存数据,负载均衡等,缓存层起到了非常重要的作用,目前常用到的缓存组件有Redis,memcache等,对于缓存要求较高的项目,Redis的集群管理框架codis也是很不错的选择;
缓存层
在代码开发过程中,为了减少编码,降低缓存和业务代码的耦合度,我们需要把缓存从繁杂的业务代码中抽离出来,成为缓存层,仅仅这样还是不够的,在这里,我不仅仅把缓存层抽离出来,还进一步增强了可插拔性,从而更加方便对缓存进行管理,从这里思路出发,我在这里做了一个简单的缓存层,并且已经在实战项目中运行了很长一段时间,目前仅仅支持redis,但是代码层次具有可扩展性,在后面要加入codis。
项目代码:https://github.com/yamorn/cache-support
整体逻辑如下图:
在调用service或者dao中需要缓存的接口时,使用aop拦截,查询缓存,如果缓存中存在,则直接返回,如果缓存中不存在,则查询数据库,将查询的结果返回调用层,与此同时也要把结果存入缓存;
声明缓存的命名空间,便于对个缓存进行管理和清除。在需要缓存的方法上加上注解,即刻达到缓存的目的,很大程度上降低了缓存层和业务代码的耦合度。