笔记

在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缓存?相关推荐

  1. springboot自动配置原理_今日份学习之Spring Boot自动配置实现原理

    通过前面章节的学习,我们掌握了使用Spring Boot框架进行实际应用开发的方法.在使用Spring Boot 的过程中,我们时常会为一些看似简单,但实际上蕴藏了强大功能的实现而惊呼,下面就让我们来 ...

  2. GPS 校验和 代码_今日份∣学习(三菱-菱云系列)电梯故障代码表

    作为电梯人, 我们不仅要从培训中学习, 更要从实践中总结窍门和技巧, 这样,见的多了, 遇到问题才不会慌张,才能得心应手, 想要成为"电梯高手", 还需要我们下功夫,加油吧! 故障 ...

  3. html访问java接口出现缓存_高可用架构设计(3) -电商商品详情页缓存背景及框架说明...

    Github 0 导读 我们这个教程,基于hystrix,如何来构建高可用的分布式系统的架构,项目实战 模拟真实业务的这么一个小型的项目,来全程贯穿,用这个项目中的业务场景去一个一个的讲解hystri ...

  4. webpack打包缓存_【第835期】Webpack 的静态资源持久缓存

    原标题:[第835期]Webpack 的静态资源持久缓存 前言 你现在还在休假吗?早读课节前以web pack漫谈结尾,今年就以web pack开始吧.今日早读文章由众成翻译@yanni4night带 ...

  5. spring ioc原理_这70 道Spring高频面试题,你不好奇吗?

    对于面试来说,Spring是必问知识.如何了解和掌握核心内容呢? 这里总结打磨了 70 道 Spring 相关面试题,有的很基础,有的很细节,大家可以评估一下自己掌握的情况. Spring 重点要掌握 ...

  6. 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 ...

  7. 过拟合和欠拟合_现代深度学习解决方案中的两大挑战:拟合和欠拟合

    全文共2306字,预计学习时长5分钟 对机器学习模型而言,最糟糕的两种情况无非是构建无用的知识体系,或是从训练数据集中一无所获.在机器学习理论中,这两种现象分别被称为过拟合和欠拟合,是现代深度学习解决 ...

  8. python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...

    python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...

  9. 积极考研自救day1之leectode24点问题+今日份学习总结

    今天开始不能丧气的听天由命,把那个诅咒我考不上的学长删了 ,努力把自己那不高的考研分数发挥到极致,主动联系导师要论文,LeetCode主要是搜索和字符串链表之类的,每天日更博客五道编程题从中选一个最精 ...

最新文章

  1. 在2019年,如何成为更好的Node.js开发者?
  2. SAP中批量更改凭证行项目方法
  3. kubernetes (k8s)的二进制部署单节点(etcd和flannel网络)
  4. MongoDB 常用故障排查工具
  5. oracle ctl file constantnull,Oracle 的一些导入和导出方法
  6. 计算机的网络操作题,计算机网络操作题
  7. 数据结构的堆栈与内存中堆栈的区别
  8. IT兄弟连 JavaWeb教程 JSP经典面试题
  9. cve-2020-0796_微软SMBv3 Client/Server远程代码执行漏洞简单分析(CVE20200796)
  10. 无纸化办公软件app 快用这款科学处理办公事宜的便签
  11. AE After Effect 渲染如何输出设置
  12. js-入门(字符串-运算符) html常用命令代码行
  13. Java不停机上线_不停机发布策略
  14. 好男人都死到哪去了?
  15. 设计分享|基于51单片机的万年历(汇编)
  16. 什么是数学建模?如何在数学建模中拿奖?通过建模学到了啥?
  17. 上位机开发——数据库系列问题一网打尽
  18. 用 Python 爬取电影,这些电影真的很不错
  19. 递归算法——阶乘、斐波那契数列
  20. 第一次遇见TW——实习生面试

热门文章

  1. 在n个火柴里面拿3根出来拼接成最大三角形的周长
  2. Struts2的Interceptor和Listener以及Plugin
  3. mysql命令去重_MySQL去重的方法整理
  4. 如何隐藏地址栏中的真实地址_Firefox推出Private Relay插件:可隐藏真实邮箱地址...
  5. python中lines是什么类型_Python中splitlines()方法的使用简介
  6. sql跨表查询_跨表更新,看到自己写的SQL像个憨憨
  7. 全网爆红!全新洗脑神曲:程序员Disco
  8. 掌握神经网络,入门深度学习
  9. mac mysql php_Mac搭建php开发环境:Apache+php+MySql
  10. hive sql 怎么实现循环_不出办公室就能无水造纸?让废纸“秒循环再生”怎么实现的...