实现外部缓存-Redis

目录

实现

RedisTemplate

RedisTemplate的序列化

RedisSerializer

创建Redis缓存配置类

测试使用

创建配置类

创建注解测试实体

创建配置文件

创建单元测试类进行测试


  • 实现

  • RedisTemplate

  • XXXTemplate 是 Spring 的一大设计特色,其中,RedisTemplate 功能是提供对 Redis 的支持
  • RedisTemplate 是 Spring Boot 访问 Redis 的核心组件,是 SpringBoot 集成 Redis 的客户端方式
  • 它的底层通过 RedisConnectionFactory 对多种 Redis 驱动进行集成,上层通过 XXXOperations 提供丰富的 API,并结合 Spring 基于泛型的 bean 注入,为开发提供了极大的便利

    实现外部缓存-Redis_第1张图片

  • RedisTemplate的序列化

  • 默认情况下,RedisTemplate使用的是JDK序列化
  • StringRedisTemplate使用的String的序列化,可读性好,将k和v都作为String进行处理
  • RedisTemplate把k和v经过了序列化存到了redis,k和v是序列化的内容,不能直接识别
  • 因此为了提高可读性,可以自定义序列化形式
  • 这里可设置key使用String序列化

    实现外部缓存-Redis_第2张图片

  • 打开redis服务,使用Postman传入数据

    实现外部缓存-Redis_第3张图片

  • 使用redis客户端查看数据,因此可看到String序列化的key以及未String序列化的value

    实现外部缓存-Redis_第4张图片

  • 同理可将key和value都设置为String形式的序列化

    实现外部缓存-Redis_第5张图片

  • 再次测试,redis客户端查看到的key和value均为String序列化的数据

    实现外部缓存-Redis_第6张图片

  • RedisSerializer

  • RedisTemplate中的几个角色:
    • RedisSerializer:由于与Redis服务器的通信一定是使用字节数组完成的,所以RedisSerializer是将Java对象编码解码的组件
    • RedisOperations:封装了一些Redis操作
    • XXXOperations:封装了指定类型或功能的数据的操作,如ZSetOperations
  • RedisSerializer提供了两个方法,一个用于序列化,一个用于反序列化
  • 并且它提供了一个泛型T,代表该序列化器处理的类型

    实现外部缓存-Redis_第7张图片

  • 它的实现类有下面这些:

    实现外部缓存-Redis_第8张图片

  • 从实现类的名字可以看出,其中有将对象转换为json的,有使用JDK自带的序列化机制进行序列化反序列化的,有专门处理String的...
  • 默认情况下,RedisTemplate使用JdkSerializationRedisSerializer,也就是JDK默认的序列化机制来进行序列化
  • RedisTemplate的成员属性中有如下和序列化器相关的属性:

    实现外部缓存-Redis_第9张图片

  • 从这里可以看出,可以对RedisTemplate进行设置,在不同的情况下使用不同的序列化器
  • 如在hash值的序列化上使用Jdk序列化器,而在普通的值上使用字符串序列化器
  • 而RedisCacheManager 是 Spring Boot 提供的一个缓存管理器,它基于 Redis 缓存提供程序
  • RedisCacheManager 允许将 Spring Boot 应用程序与 Redis 集成,从而提高应用程序的性能
  • RedisCacheManager 实现了 Spring 的 CacheManager 接口,这意味着它可以与 Spring 的缓存抽象一起使用
  • 可以使用 Spring 的 @Cacheable、@CachePut 和 @CacheEvict 注释来配置缓存策略,并使用 RedisCacheManager 来管理缓存
  • RedisCacheManager 还提供了一组管理缓存的方法,例如 clear、evict 等
  • 创建Redis缓存配置类

    实现外部缓存-Redis_第10张图片

  • 默认的RedisTemplate和RedisCacheManager使用JDK的序列化方式,可以自定义为string和json序列化
  • 测试使用

  • 创建配置类

    实现外部缓存-Redis_第11张图片

  • 创建注解测试实体

    实现外部缓存-Redis_第12张图片

  • 创建配置文件

    实现外部缓存-Redis_第13张图片

  • 创建单元测试类进行测试

    实现外部缓存-Redis_第14张图片

你可能感兴趣的:(缓存,缓存,redis,数据库)