SpringBoot2.3整合redis缓存自定义序列化的实现

 更新时间:2020年08月12日 11:13:14   作者:xhnb  
这篇文章主要介绍了SpringBoot2.3整合redis缓存自定义序列化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.引言

我们使用redis作为缓存中间件时,当我们第一次查询数据的时候,是去数据库查询,然后查到的数据封装到实体类中,实体类会被序列化存入缓存中,当第二次查数据时,会直接去缓存中查找被序列化的数据,然后反序列化被我们获取。我们在缓存中看到的序列化数据不直观,如果想看到类似json的数据格式,就需要自定义序列化规则。

2.整合redis

pom.xml:

<!--引入redis-->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-redis</artifactId>
      <version>2.3.0.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
    </dependency>

application.yml:

spring:
 redis:
  host: 192.168.85.130
  port: 6379
  database: 0

springboot主配置类要加上@EnableCaching注解

3.自定义序列化

@Configuration
public class MyRedisConfig {
  @Bean
  public RedisTemplate<Object, Object> empRedisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
    RedisTemplate<Object,Object> template = new RedisTemplate<>();
    template.setConnectionFactory(redisConnectionFactory);
    Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
    template.setDefaultSerializer(serializer);
    return template;
  }

  @Bean
  public CacheManager cacheManager(RedisConnectionFactory factory){
    RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
        .entryTtl(Duration.ofDays(1))
        .disableCachingNullValues()
        .serializeKeysWith(RedisSerializationContext.SerializationPair
            .fromSerializer(new StringRedisSerializer()))
        .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
    return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();}
}

4.测试

DeptService:

@Service
public class DeptService {
  @Autowired
  DepartmentMapper departmentMapper;
  @Cacheable(value = "dept")
  public Department findById(Integer id){
  System.out.println("查询"+id+"号部门");
    Department department = departmentMapper.getDeptById(id);
    return department;
  }
}

EmployeeService:

@Service
public class EmployeeService {
  @Autowired
  EmployeeMapper employeeMapper;
 	@Cacheable(value = "emp")
  public Employee findById(Integer id){
    System.out.println("查询"+id+"号员工");
    Employee employee = employeeMapper.getEmpById(id);
    return employee;
  }
}

@Cacheable(value = “dept”) :该注解在方法上,方法传入参数默认为key值,方法返回值为value值,注解的参数value = "dept"是缓存的名子

结果:

到此这篇关于SpringBoot2.3整合redis缓存自定义序列化的实现的文章就介绍到这了,更多相关SpringBoot2.3 redis自定义序列化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot连接Redis2种模式解析

    SpringBoot连接Redis2种模式解析

    这篇文章主要介绍了SpringBoot连接Redis2种模式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java+Spring+MySql环境中安装和配置MyBatis的教程

    Java+Spring+MySql环境中安装和配置MyBatis的教程

    这篇文章主要介绍了Java+Spring+MySql环境中安装和配置MyBatis的教程,MyBatis一般被用来增强数据库操作,文中对MyBatis的主配置文件有较为详细的讲解,需要的朋友可以参考下
    2016-04-04
  • 一文详解Spring Boot可以同时处理多少请求

    一文详解Spring Boot可以同时处理多少请求

    SpringBoot是一个流行的Java开发框架,它被广泛用于构建Web应用程序,但是,开发人员通常会担心它的性能问题,特别是在高负载条件下,Spring Boot能够同时处理多少请求是一个重要的问题,在本文中,我们将讨论SpringBoot的请求处理能力,并介绍如何提高性能
    2023-10-10
  • 怎么运行用记事本写的java程序

    怎么运行用记事本写的java程序

    以下小编就为大家介绍一下,怎么运行用记事本写的java程序。需要的朋友可以过来参考下
    2013-08-08
  • Java内存分配多种情况的用法解析

    Java内存分配多种情况的用法解析

    这篇文章主要介绍了Java内存分配多种情况的用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • JAVA内存模型(JMM)详解

    JAVA内存模型(JMM)详解

    这篇文章主要介绍了JAVA内存模型(JMM)详解的相关资料,需要的朋友可以参考下
    2022-12-12
  • win11 idea shift+F6快捷键失效问题解决方案

    win11 idea shift+F6快捷键失效问题解决方案

    这篇文章主要介绍了win11 idea shift+F6快捷键失效问题,本文给大家分享最新解决方案,需要的朋友可以参考下
    2023-08-08
  • Java实现的汉语拼音工具类完整实例

    Java实现的汉语拼音工具类完整实例

    这篇文章主要介绍了Java实现的汉语拼音工具类,结合完整实例形式分析了java基于pinyin4j包实现编码转换的相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • java项目中使用 Lombok遇到的问题小结

    java项目中使用 Lombok遇到的问题小结

    这篇文章主要介绍了java项目中使用 Lombok遇到的问题小结,需要的朋友可以参考下
    2018-07-07
  • ShardingSphere JDBC强制路由使用的项目实践

    ShardingSphere JDBC强制路由使用的项目实践

    在某些特定场景下,可能需要绕过分片规则直接定位到特定的数据库或表,这种情况下就可以使用HintRouting,本文就来介绍一下ShardingSphere JDBC强制路由使用的项目实践,感兴趣的可以了解一下
    2024-06-06

最新评论