redis spring 切面缓存_今日份学习: Spring中使用AOP并实现redis缓存?
笔记
在Spring中如何使用AOP?
Spring是如何切换JDK动态代理和CGLIB的?
spring.aop.proxy-target-class=true (在下方第二个链接中,原生doc中提到过)
@Aspect生命切面
@Before
@After
@Around
Redis
广泛使用的内存缓存
常见的数据结构:
String
List
Set
Hash
ZSet
Redis为什么快?
完全基于内存
优秀的数据结构设计
单一线程,避免上下文切换开销
事件驱动,非阻塞
浏览的一些学习资料
2020年2月8日 更新:
如何使用再spring boot中redis?
这里我使用了docker容器
首先引入pom.xml
org.springframework.boot
spring-boot-starter-data-redis
docker中运行redis,端口为6379
docker run -p 6379:6379 -d redis
创建了一个名为config的package,并创建了config/AppConfig.java
@Configuration
public class AppConfig {
@Bean
RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
return redisTemplate;
}
}
使用AOP实现redis的缓存(代码)
@Aspect
@Configuration
public class CacheAspect {
// Map cache = new HashMap<>();
@Autowired
RedisTemplate redisTemplate;
@Around("@annotation(emmm.anno.Cache)")
public Object cache(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
String methodName = signature.getName();
Object cachedValue = redisTemplate.opsForValue().get(methodName);
// Object cachedValue = cache.get(methodName);
if (cachedValue != null) {
System.out.println("from cache");
return cachedValue;
} else {
System.out.println("from db");
Object realValue = joinPoint.proceed();
redisTemplate.opsForValue().set(methodName, realValue);
// cache.put(methodName, realValue);
return realValue;
}
}
}
补:参考到的网址:
redis spring 切面缓存_今日份学习: Spring中使用AOP并实现redis缓存?相关推荐
- springboot自动配置原理_今日份学习之Spring Boot自动配置实现原理
通过前面章节的学习,我们掌握了使用Spring Boot框架进行实际应用开发的方法.在使用Spring Boot 的过程中,我们时常会为一些看似简单,但实际上蕴藏了强大功能的实现而惊呼,下面就让我们来 ...
- GPS 校验和 代码_今日份∣学习(三菱-菱云系列)电梯故障代码表
作为电梯人, 我们不仅要从培训中学习, 更要从实践中总结窍门和技巧, 这样,见的多了, 遇到问题才不会慌张,才能得心应手, 想要成为"电梯高手", 还需要我们下功夫,加油吧! 故障 ...
- html访问java接口出现缓存_高可用架构设计(3) -电商商品详情页缓存背景及框架说明...
Github 0 导读 我们这个教程,基于hystrix,如何来构建高可用的分布式系统的架构,项目实战 模拟真实业务的这么一个小型的项目,来全程贯穿,用这个项目中的业务场景去一个一个的讲解hystri ...
- webpack打包缓存_【第835期】Webpack 的静态资源持久缓存
原标题:[第835期]Webpack 的静态资源持久缓存 前言 你现在还在休假吗?早读课节前以web pack漫谈结尾,今年就以web pack开始吧.今日早读文章由众成翻译@yanni4night带 ...
- spring ioc原理_这70 道Spring高频面试题,你不好奇吗?
对于面试来说,Spring是必问知识.如何了解和掌握核心内容呢? 这里总结打磨了 70 道 Spring 相关面试题,有的很基础,有的很细节,大家可以评估一下自己掌握的情况. Spring 重点要掌握 ...
- spring框架mvc框架_5篇Spring框架书籍,通过MVC学习Spring
spring框架mvc框架 Spring Framework is one of the most widely used Java EE Frameworks. It's an open sourc ...
- 过拟合和欠拟合_现代深度学习解决方案中的两大挑战:拟合和欠拟合
全文共2306字,预计学习时长5分钟 对机器学习模型而言,最糟糕的两种情况无非是构建无用的知识体系,或是从训练数据集中一无所获.在机器学习理论中,这两种现象分别被称为过拟合和欠拟合,是现代深度学习解决 ...
- python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...
python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...
- 积极考研自救day1之leectode24点问题+今日份学习总结
今天开始不能丧气的听天由命,把那个诅咒我考不上的学长删了 ,努力把自己那不高的考研分数发挥到极致,主动联系导师要论文,LeetCode主要是搜索和字符串链表之类的,每天日更博客五道编程题从中选一个最精 ...
最新文章
- 在2019年,如何成为更好的Node.js开发者?
- SAP中批量更改凭证行项目方法
- kubernetes (k8s)的二进制部署单节点(etcd和flannel网络)
- MongoDB 常用故障排查工具
- oracle ctl file constantnull,Oracle 的一些导入和导出方法
- 计算机的网络操作题,计算机网络操作题
- 数据结构的堆栈与内存中堆栈的区别
- IT兄弟连 JavaWeb教程 JSP经典面试题
- cve-2020-0796_微软SMBv3 Client/Server远程代码执行漏洞简单分析(CVE20200796)
- 无纸化办公软件app 快用这款科学处理办公事宜的便签
- AE After Effect 渲染如何输出设置
- js-入门(字符串-运算符) html常用命令代码行
- Java不停机上线_不停机发布策略
- 好男人都死到哪去了?
- 设计分享|基于51单片机的万年历(汇编)
- 什么是数学建模?如何在数学建模中拿奖?通过建模学到了啥?
- 上位机开发——数据库系列问题一网打尽
- 用 Python 爬取电影,这些电影真的很不错
- 递归算法——阶乘、斐波那契数列
- 第一次遇见TW——实习生面试
热门文章
- 在n个火柴里面拿3根出来拼接成最大三角形的周长
- Struts2的Interceptor和Listener以及Plugin
- mysql命令去重_MySQL去重的方法整理
- 如何隐藏地址栏中的真实地址_Firefox推出Private Relay插件:可隐藏真实邮箱地址...
- python中lines是什么类型_Python中splitlines()方法的使用简介
- sql跨表查询_跨表更新,看到自己写的SQL像个憨憨
- 全网爆红!全新洗脑神曲:程序员Disco
- 掌握神经网络,入门深度学习
- mac mysql php_Mac搭建php开发环境:Apache+php+MySql
- hive sql 怎么实现循环_不出办公室就能无水造纸?让废纸“秒循环再生”怎么实现的...