Java Web中的缓存层框架

简述

在web系统中,常见的加速系统访问的手段有对页面静态化,缓存页面,缓存数据,负载均衡等,缓存层起到了非常重要的作用,目前常用到的缓存组件有Redis,memcache等,对于缓存要求较高的项目,Redis的集群管理框架codis也是很不错的选择;

缓存层

在代码开发过程中,为了减少编码,降低缓存和业务代码的耦合度,我们需要把缓存从繁杂的业务代码中抽离出来,成为缓存层,仅仅这样还是不够的,在这里,我不仅仅把缓存层抽离出来,还进一步增强了可插拔性,从而更加方便对缓存进行管理,从这里思路出发,我在这里做了一个简单的缓存层,并且已经在实战项目中运行了很长一段时间,目前仅仅支持redis,但是代码层次具有可扩展性,在后面要加入codis。

项目代码:https://github.com/yamorn/cache-support

整体逻辑如下图:

调用service或者dao中需要缓存的接口时,使用aop拦截,查询缓存,如果缓存中存在,则直接返回,如果缓存中不存在,则查询数据库,将查询的结果返回调用层,与此同时也要把结果存入缓存;

声明缓存的命名空间,便于对个缓存进行管理和清除。在需要缓存的方法上加上注解,即刻达到缓存的目的,很大程度上降低了缓存层和业务代码的耦合度。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java缓存实现demo完整实例,很不错的资源,欢迎大家来下载学习。/** * 此函数接受一个对象列表,数目不定,opration:表是触发的事件 * eg:change;fnClear:表示初始化下拉框。var_args表示多个下拉框... */ function bindSelects(operation, initSelectObj, loadShow, var_args){ //每个argument对象都有一个 change事件 //change事件会触发:此argument之后的对象清空,紧跟此对象的后一对象发送ajax请求 var elementList = []; for (var i = 3; arguments[i]; i++) { elementList[i-3] = arguments[i]; } for (var i = 0; elementList[i]; i++) { (function(k) { elementList[k].bind(operation, function(){ selectType = elementList[k].attr("name"); //其后的对象进行某个操作 for (var j = k+1; elementList[j]; j++) { if (initSelectObj && initSelectObj.constructor===Function) { if(elementList[k].val() == "") { initSelectObj(elementList[j],elementList[j].data(SELECT_KEY)); LOAD_KEYS[j].hide(); } else{ initSelectObj(elementList[j],elementList[j].data(SELECT_KEY)); } } } //紧跟对象发送ajax if (elementList[k+1]) { if(elementList[k].val() != "") { //从页面缓存取出 if(elementList[k+1].data(elementList[k].val())) { var data = elementList[k+1].data(elementList[k].val()); var key=LIST_KEYS[k]; var jsonKey = [key]; addContentToSelect(data,jsonKey,elementList[k+1]); } else { //从缓存取出数据 if (fnAjax && fnAjax.constructor===Function) { loadShow(LOAD_KEYS[k+1]); fnAjax(elementList[k+1].data(SELECT_KEY),LIST_KEYS[k],LOAD_KEYS[k+1],elementList[k],selectType); } } } } }); })(i); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值