Spring Boot 学习----SpringBoot整合Redis

SpringBoot整合Redis

说明:由于使用的是window系统,所以本文中使用的redis是再Docker中运行的。

至于如何启动redis这里不再说明,需要的请自行百度。

配置pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

编写redis配置类

/**
 * redis配置类
 */
@Configuration
//开启缓存
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
    /**
     * 自定义生成key的规则
     * @return
     */
    @Override
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object o, Method method, Object... objects) {
                //格式化缓存key字符串
                StringBuilder sb = new StringBuilder();
                //追加类名
                sb.append(o.getClass().getName());
                //追加方法名
                sb.append(method.getName());
                System.out.println("调用Redis缓存Key : " + sb.toString());
                return sb.toString();
            }
        };
    }

    /**
     * 采用RedisCacheManager作为缓存管理器
     * @param connectionFactory
     */
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
        RedisCacheManager redisCacheManager = RedisCacheManager.create(connectionFactory);
        return  redisCacheManager;
    }

    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        // 解决键、值序列化问题
        StringRedisTemplate template = new StringRedisTemplate(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}
  • 上面的redisTemplate可以使用其他序列化的实现。
  • key的生成规则可以由自己定义,返回值会成为redis的key。

编写redis操作工具类

redis工具类主要使用redisTemplate类进行操作,至于怎么操作这里不再阐述。你可以找网上大佬封装好的,也可以自己封装。

使用缓存

这里主要讲解一下 @Cacheable、@CachePut、@CacheEvict

  • @Cacheable(在执行 @Cacheable 标注的方法前先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,执行该方法并将方法返回值放进缓存。)
@Cacheable(key = "#id",value = "key",unless = "#id==null")
@PostMapping("/{id}/{value}")
public String setKey(@PathVariable String value,@PathVariable String id){
    return value+id;
}

PS:若去掉value属性则会抛错。若没有key则会进入到配置类中的key生成策略中生成对应key。

最后进入redis中的key格式回事 key::value

  • @CacheEvict(方法执行成功后会从缓存中移除相应数据)
@CacheEvict(value = "key",key = "#id")
@DeleteMapping("/{id}")
public String clear(@PathVariable String id){
    return null;
}
  • @CachePut(主要用于数据新增和修改方法)
@CachePut(value = "value", key = "#id")
@PutMapping("/{id}/{value}")
public User save(){
    return null;
}

PS:参数, value缓存名、 key缓存键值、 condition满足缓存条件、unless否决缓存条件

具体又哪些参数根据注解的参数来对照。

原文地址:https://www.cnblogs.com/bananafish/p/12347035.html

时间: 2024-10-07 13:50:59

Spring Boot 学习----SpringBoot整合Redis的相关文章

Spring Boot 学习笔记--整合Thymeleaf

1.新建Spring Boot项目 添加spring-boot-starter-thymeleaf依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-thymeleaf</artifactId> 4 </dependency> 2.添加静态文件 根据spring boot默认规则,脚本和样式默

Spring Boot 2.X整合Spring-cache,让你的网站速度飞起来

计算机领域有人说过一句名言:“计算机科学领域的任何问题都可以通过增加一个中间层来解决”,今天我们就用Spring-cache给网站添加一层缓存,让你的网站速度飞起来. 本文目录 一.Spring Cache介绍二.缓存注解介绍三.Spring Boot+Cache实战1.pom.xml引入jar包2.启动类添加@EnableCaching注解3.配置数据库和redis连接4.配置CacheManager5.使用缓存注解6.查看缓存效果7.注意事项 一.Spring Cache介绍 Spring

Spring Boot学习记录(三)--整合Mybatis

Spring Boot学习记录(三)–整合Mybatis 标签(空格分隔): spring-boot 控制器,视图解析器前面两篇都已弄好,这一篇学习持久层框架整合. 1.数据源配置 数据源使用druid,maven引入相关依赖,包括spring-jdbc依赖,mysql依赖 1.转换问题 配置的过程要学会为什么这样配置,而不是只学会了配置.这里我们可以和以前的配置方式对比: 以前版本 <!--配置数据库连接池Druid--> <bean id="dataSource"

Spring boot 学习笔记 (二)- 整合MyBatis

Spring boot 学习笔记 (二)- 整合MyBatis Spring Boot中整合MyBatis,并通过注解方式实现映射. 整合MyBatis 以Spring boot 学习笔记 (一)- Hello world 为基础项目,在pom.xml中添加如下依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter&l

Spring boot配置多个Redis数据源操作实例

原文:https://www.jianshu.com/p/c79b65b253fa Spring boot配置多个Redis数据源操作实例 在SpringBoot是项目中整合了两个Redis的操作实例,可以增加多个: 一般在一个微服务生态群中是不会出现多个Redis中间件的,所以这种场景很少见,但也不可避免,但是不建议使用,个人建议,勿喷. 基于Maven3.0搭建,spring1.5.9.RELEASE和JDK1.8 1.新建SpringBoot项目,添加依赖 <dependency> &l

Spring Boot学习大全(入门)

Spring Boot学习(入门) 1.了解Spring boot Spring boot的官网(https://spring.io),我们需要的一些jar包,配置文件都可以在下载.添置书签后,我自己常常来看看spring boot这老兄,以及后面所需要的Spring Cloud.Spring Cloud Data Flow. 2.Spring Boot的简介 随着动态语言的流行( Ruby, Groovy, Scala, Node. js)Java的开发显得格外的笨重,繁多的配置,低下的开发效

三:Springboot整合Redis

一:springboot整合redis redis版本:3.0.0 运行环境:linux 1.安装redis 1.1安装gcc yum install gcc-c++ 1.2解压redis.3.0.0.tar.gz压缩包 tar -zxvf redis-3.0.0.tar.gz 1.3进入解压后的目录进行编译 cd redis-3.0.0 make 1.4将redis安装到指定目录 make PREFIX=/usr/local/redis install 1.5启动redis ./redis-s

SpringBoot整合Redis并完成工具类

SpringBoot整合Redis的资料很多,但是我只需要整合完成后,可以操作Redis就可以了,所以不需要配合缓存相关的注解使用(如@Cacheable),而且我的系统框架用的日志是log4j,不是SpringBoot默认的Logback.通过查询资料我完成了Redis整合,并写了Redis操作工具类.特意在此记录一下,分享给大家,也方便以后查阅. 1.SpringBoot版本如下 <parent> <groupId>org.springframework.boot</gr

超简单!!!SpringBoot整合Redis

1.导入Pom.xml依赖 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.ap