SpringBoot整合Redis的步骤
1.添加配置文件:
- Redis.properties
# 配置单台redis服务器 redis.host=192.168.126.129 ip地址 redis.port=6379 端口号
- 设置配置类:
RedisConfig
2.将对象转化为Json格式入门案例
API: MAPPER.writeValueAsString(itemDesc);
3.将对象转化为Json格式格式优化
4.AOP实现Redis缓存
AOP实现Redis
@cacheFind()注解
实现策略:
A.需要自定义注解CacheFind
B.设定注解的参数 key的前缀 数据的超时的时间
C.在方法中标识注解,
D.利用aop拦截指定的注解
E.使用环绕通知 around通知 实现缓存业务
方式一
编辑自定义注解:
1.CacheFind
2.在方法上标识注解
3.在aop上面拦截注解(切入点表达式)_CacheAOP
方式二 优化
现有代码存在的问题
如果直接将缓存业务,写到业务层,如果将来的缓存代码发生变化,则代码耦合高
如果其他的业务也需要,必然重写编辑代码,发效率低
AOP概念:
AOP--面向切面编程,通过预编译和运行期间 动态代理;降低耦合性
提高程序的重用性,同时提高开发效率;
3.AOP实现的具体步骤:
公式 AOP(切面)=通知方法+切入点表达式
五种通知方法:
1.before
在执行目标方法之前执行
2.after
在执行目标方法之后执行
3.afterReturning
在目标方法执行之后报错时执行
4.afterThrowing
无论什么时候程序执行完成,都要执行的通知
5.around ___功能最强大的
环绕通知 在目标方法执行前,后执行
可以控制目标方法是否执行 可以控制程序执行的轨迹;
注:
前面4中通知不能控制目标放啊是否执行,一般用来记录程序的执行状态;一般应用于监控操作只用于做记录的
四种切入点表达式:
- bean ("bean的id")
粒度:按Bean匹配(就是实例化的兑现)当前bean中的方法都会执行通知 ___粗粒度
- within ("包名.类名") ___粗粒度
可以匹配多个类用通配符*
- execution ("返回值类型 包名.类名.方法名(参数列表)")
细粒度 方法参数级别
- @annotation ("包名.类名")
细粒度 安装注解匹配
以上就是SpringBoot整合Redis的步骤的详细内容,更多关于SpringBoot整合Redis的资料请关注我们其它相关文章!
相关推荐
-
使用redis的increment()方法实现计数器功能案例
一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限! 当时就想到使用redis的递增方法increment()来实现计数器功能,一定要注意redisTemplate和stringRedisTemplate的使用 首先设置key: 该key我使用了用户id和当天日期作为key的一部分,date:xxxx-xx-xx格式,这样一来该用户在第二天扫码的时候又是一个新key,因为日期不同了 设置key的过期时间: 实现计
-
springboot配置redis过程详解
在springboot中,默认继承好了一套完好的redis包,可以直接使用,但是如果使用中出了错不容易找到错误的原因,因此这里使用自己配置的redis: 需要使用的三个主要jar包: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
-
使用Redis incr解决并发问题的操作
项目背景: 1.新增问题件工单,工单中有工单编码字段,工单编码字段的规则为 "WT"+yyyyMMdd+0000001. 2.每天的工单生成量是30W,所以会存在并发问题 解决思路: 1.首先乐观的认为redis不会宕机,对应的缓存不会被清除(除非人为操作,人为操作会有独立的补救办法) 2.将工单编码存到缓存中(redis),其值只存"WT"+yyyyMMdd后面的数字部分: 对应的key为:key标识+yyyyMMdd,即每天一个key 3.每次生成工单编码时,先
-
利用spring-data-redis实现incr自增的操作
应该有不少人在使用spring-data-redis时遇到各种各样的问题.反正我是遇到了. 由于是隔了一段时间才写的本篇博客,也懒得去重现哪些错误场景了,下面凭着记忆写了几个我遇到的问题: redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range 使用的RedisTemplate,做读写操作时候,都是要经过序列化和反序列化. 这时你使用redisTemplate.o
-
SpringBoot整合Redis的步骤
1.添加配置文件: Redis.properties # 配置单台redis服务器 redis.host=192.168.126.129 ip地址 redis.port=6379 端口号 设置配置类: RedisConfig 2.将对象转化为Json格式入门案例 API: MAPPER.writeValueAsString(itemDesc); 3.将对象转化为Json格式格式优化 4.AOP实现Redis缓存 AOP实现Redis @cacheFind()注解 实现策略: A.需要自定义注解C
-
SpringBoot整合Redis、ApachSolr和SpringSession的示例
本文介绍了SpringBoot整合Redis.ApachSolr和SpringSession,分享给大家,具体如下: 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多繁琐的配置.SpringBoot整合Druid.Mybatis已经司空见惯,在这里就不详细介绍了.今天我们要介绍的是使用SpringBoot整合Redis.ApacheSolr和SpringSession. 二.SpringBoot整合Redis Redis是大家比
-
SpringBoot整合Redisson的步骤(单机版)
Redisson.Jedis.Lettuce优缺点对比 (1)Redisson 优点: 实现了分布式特性和可扩展的 Java 数据结构,适合分布式开发: API线程安全: 基于Netty框架的事件驱动的通信,可异步调用. 缺点: API更抽象,学习使用成本高. (2)Jedis 优点: 提供了比较全面的Redis操作特性的API API基本与Redis的指令一一对应,使用简单易理解. 缺点: 同步阻塞IO: 不支持异步: 线程不安全. (3)Lettuce 优点: 线程安全; 基于Netty 框
-
SpringBoot整合Redis管道的示例代码
目录 1. Redis 之管道(pipeline) 2. SpringBoot 整合 Redis 管道实例 1. Redis 之管道(pipeline) 执行一个Redis命令,Redis客户端和Redis服务器就需要执行以下步骤: 客户端发送命令到服务器: 服务器接受命令请求,执行命令,产生相应的结果: 服务器返回结果给客户端: 客户端接受命令的执行结果,并向用户展示. Redis命令所消耗的大部分时间都用在了发送命令请求和接收命令结果上面,把任意多条Redis命令请求打包在一起,然后一次性地
-
springboot整合redis进行数据操作(推荐)
redis是一种常见的nosql,日常开发中,我们使用它的频率比较高,因为它的多种数据接口,很多场景中我们都可以用到,并且redis对分布式这块做的非常好. springboot整合redis比较简单,并且使用redistemplate可以让我们更加方便的对数据进行操作. 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte
-
SpringBoot 整合Redis 数据库的方法
Redis简介 Redis(官网: https://redis.io )是一个基于内存的日志型可持久化的缓存数据库,保存形式为key-value格式,Redis完全免费开源,它使用ANSI C语言编写.与其他的key - value缓存产品一样,Redis具有以下三个特点. • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用: • Redis不仅支持简单的key-value类型数据,同时还提供字符串.链表.集合.有序集合和哈希等数据结构的存储: • R
-
SpringBoot整合Redis正确的实现分布式锁的示例代码
前言 最近在做分块上传的业务,使用到了Redis来维护上传过程中的分块编号. 每上传完成一个分块就获取一下文件的分块集合,加入新上传的编号,手动接口测试下是没有问题的,前端通过并发上传调用就出现问题了,并发的get再set,就会存在覆盖写现象,导致最后的分块数据不对,不能触发分块合并请求. 遇到并发二话不说先上锁,针对执行代码块加了一个JVM锁之后问题就解决了. 仔细一想还是不太对,项目是分布式部署的,做了负载均衡,一个节点的代码被锁住了,请求轮询到其他节点还是可以进行覆盖写,并没有解决到问题啊
-
Springboot整合Redis最简单例子分享
1. 编写目的 最简单的例子,Springboot整合Redis. 2. 详细过程 pom 文件添加依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr
-
SpringBoot整合Redis的示例
redis是最常用的缓存数据库,常用于存储用户登录token.临时数据.定时相关数据等. redis是单线程的,所以redis的操作是原子性的,这样可以保证不会出现并发问题. redis基于内存,速度非常快,据测试,redis读的速度是110000次/s,写的速度是81000次/s 本节介绍SpringBoot引入redis,以及使用RedisTemplate来操作redis数据. 采用SpringBoot 2.1.9.RELEASE,对应示例代码在:https://github.com/lao
-
springboot整合Shiro的步骤
1.创建一个springboot项目 选中web和thymeleaf 1.1新建index.html <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head&
随机推荐
- Windows Powershell 定义函数
- js调试工具console.log()方法查看js代码的执行情况
- IO多路复用之epoll全面总结(必看篇)
- java类中元素初始化顺序详解
- php 的加密函数 md5,crypt,base64_encode 等使用介绍
- .NET获取客户端的操作系统版本、浏览器版本和IP地址
- phpphp图片采集后按原路径保存图片示例
- php后台如何避免用户直接进入方法实例
- Laravel 5 学习笔记
- 在JavaScript应用中使用RequireJS来实现延迟加载
- 在C#和MySQL中存取中文字符时避免乱码的方法
- 用js做一个小游戏平台 (一)
- JS中如何实现复选框全选功能
- jquery select多选框的左右移动 具体实现代码
- Redis教程(二):String数据类型
- 基于jQuery架构javascript基础体系
- 基于Nginx的衍生版服务器Tengine简介
- 探讨C++中数组名与指针的用法比较分析
- Android自定义View控件实现刷新效果
- angular中ui calendar的一些使用心得(推荐)