Java教程

Redis,Cache和spring整合

本文主要是介绍Redis,Cache和spring整合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

配置application.yaml文件

`spring:
redis:
host: 192.168.109.132
port: 6379
datasource:
url: jdbc:mysql:///cd2203?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource

mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #输出sql
mapper-locations:
- classpath:mapper/*Mapper.xml`

启动类下添加注解

@MapperScan("com.bjpowernode.rediscachespringboot.mapper")//扫描mapper @EnableCaching //启用缓存

添加依赖

  1. 连接池的依赖
  2. Jason的依赖 (如果带有web 就不用了导入Jackson)

修改UserServiceImpl

@Service @CacheConfig(cacheNames = "com.bjpowernode.service.impl.UserServiceImpl") // 命名隔离
方法上添加注解
@CacheConfig: 一般配置在类上,指定缓存名称,这个名称是和上面“置缓存管理器”中缓存名称的一致。
@Cacheable: 作用于方法上,用于对于方法返回结果进行缓存,如果已经存在该缓存,则直接从缓存中获取,缓存的key可以从入参中指定,缓存的 value 为方法返回值。
@CachePut: 作用于方法上,无论是否存在该缓存,每次都会重新添加缓存,缓存的key可以从入参中指定,缓存的value为方法返回值,常用作于更新。
@CacheEvict: 作用于方法上,用于清除缓存
@Caching: 作用于方法上,用于一次性设置多个缓存。
#作用在你要缓存的数据上
上面注解中的常用配置参数:

value: 缓存管理器中配置的缓存的名称,这里可以理解为一个组的概念,缓存管理器中可以有多套缓存配置,每套都有一个名称,类似于组名,这个可以配置这个值,选择使用哪个缓存的名称,配置后就会应用那个缓存名称对应的配置。
key: 缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合。
condition: 缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存。
unless: 不缓存的条件,和 condition 一样,也是 SpEL 编写,返回 true 或者 false,为 true 时则不进行缓存。

修改序列化方式

点击查看代码
package com.bjpowernode.rediscachespringboot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class RedisConfig {
    @Bean
    public RedisCacheConfiguration redisCacheConfiguration(){
        RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();

        /*
        配置Redis默认的序列化方式
        因为使用注解操作redis缓存的时候底层使用的是RedisTemplate
        而该对象默认使用的是jdk的序列化方式

        可以将该序列化方式改为json方式
         */
        cacheConfiguration = cacheConfiguration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.json()));
        return cacheConfiguration;

    }
}

这篇关于Redis,Cache和spring整合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!