首页 / 缓存 / redis通用缓存设计(3)
redis通用缓存设计(3)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了redis通用缓存设计(3),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1542字,纯文字阅读大概需要3分钟。
内容图文
![redis通用缓存设计(3)](/upload/InfoBanner/zyjiaocheng/897/bdaad92b983b4e949f6720bb5983602a.jpg)
前两篇文章大致实现了通用缓存,缓存加不加,哪些方法加,哪些方法不加已经实现了人为的控制,但是!!!
如果想让这个注解
@Around("execution(* com.lkl.service.*ServiceImpl.find*(..))")
生效,方法必须要以指定的方法名开头,该例子中必须要以find开头。如果方法名是QueryAll()的话,还需要另外做一个切入点,这样就没有达到通用的目的。
想要做到更加灵活,就要用到@annotation切入点表达式。代表只用该注解的方法,才会进入切面。
@Around("@annotation(com.lkl.annotations.RedisCache)")
此时,对应上面文章(redis通用缓存设计2)中就不在判断是否方法上是否存在@RedisCache这个注解了,因为@annotation这种表达式就代表有这个注解才会进入切面。
代码修改如下:
@Around("@annotation(com.lkl.annotations.RedisCache)") public Object around(ProceedingJoinPoint pjp){ //获取key String key = getKey(pjp); //获取jedis对象,以默认端口号6379连接 Jedis jedis = new Jedis("192.168.1.*",6379); Object result = null; //判断Redis中是否存在这个key if(jedis.exists(key)){//如果存在取出数据返回 System.out.println("the data is exist in redis,direct return "); String json = jedis.get(key); //把这个签名,转换为反射包中的MethodSignature MethodSignature signature = (MethodSignature) pjp.getSignature(); System.out.println(signature.getReturnType()); result = JSONObject.parseObject(json,signature.getReturnType()); }else{ //如果不存在,放行Dao方法执行存入Redis中 System.out.println("the data is not exist in redis,query the DB"); try { result = pjp.proceed();//放行 //放入redis中,以json形式存入 jedis.set(key,JSONObject.toJSONString(result)); } catch (Throwable throwable) { throwable.printStackTrace(); } } return result; }
内容总结
以上是互联网集市为您收集整理的redis通用缓存设计(3)全部内容,希望文章能够帮你解决redis通用缓存设计(3)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。