Redis 是一种高性能键值数据库,常用于缓存和会话管理。在 Java 应用中使用 Redis 时,我们可以通过配置类来方便地管理 Redis 连接池、数据类型转换等功能。本文将介绍 Redis Configuration 配置类中常用的注解,让大家更加熟悉 Redis 在 Java 应用中的使用。
RedisConnectionFactory 配置
在使用 Redis 时,我们需要先配置 RedisConnectionFactory,它是连接 Redis 的工厂类。以下是 RedisConnectionFactory 的常用注解。
@Configuration
@Configuration 用于声明 RedisConfig 类为配置类。RedisConfig 类必须被声明为配置类, 以便 Spring 能够扫描并将其包含的 Bean 注册到 IoC 容器中。
@Configuration public class RedisConfig { ... }
@EnableRedisRepositories
@EnableRedisRepositories 用于启用 Spring Data Redis 的 Repository 支持,它可以自动生成 Redis Repository 的实现。需要指定 Redis 的主机和端口号。
@EnableRedisRepositories(basePackages = "com.example.redis") public class RedisConfig { ... }
@Bean
@Bean 用于声明一个 RedisConnectionFactory 的 Bean,并指定它的相关配置,比如 Redis 的地址和端口、连接池大小等。
// javascriptcn.com 代码示例 @Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setHostName("localhost"); config.setPort(6379); LettuceConnectionFactory factory = new LettuceConnectionFactory(config); factory.setPoolConfig(new JedisPoolConfig()); factory.afterPropertiesSet(); return factory; }
在上面的代码中,我们使用 RedisStandaloneConfiguration 配置 Redis 的主机和端口,使用 LettuceConnectionFactory 创建连接工厂,同时设置连接池的配置。
RedisTemplate 配置
在连接 Redis 后,我们就可以通过 RedisTemplate 来操作 Redis 了。RedisTemplate 是 Redis 支持的数据类型与 Java 类型之间的转换器,以下是 RedisTemplate 的常用注解。
@Bean
@Bean 用于声明一个 RedisTemplate 的 Bean,并指定它的相关配置,比如 Key 和 Value 的序列化方式。
// javascriptcn.com 代码示例 @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory()); Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule()); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); serializer.setObjectMapper(mapper); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(serializer); template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(serializer); template.afterPropertiesSet(); return template; }
在上面的代码中,我们使用 Jackson2JsonRedisSerializer 序列化 Key 和 Value,同时指定了一些 Jackson 序列化的配置。
Redis Cache 配置
除了 RedisConnectionFactory 和 RedisTemplate,Redis 在 Spring Boot 中还有 Cache 的支持。以下是 Redis Cache 的常用注解。
@EnableCaching
@EnableCaching 用于开启 Spring Cache 抽象层对缓存的支持。需要在 CacheManager 上注入 RedisCacheManager。
// javascriptcn.com 代码示例 @EnableCaching public class RedisConfig { ... @Bean public RedisCacheManager cacheManager() { RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofMinutes(10)) .disableCachingNullValues(); RedisCacheManager manager = RedisCacheManager.builder(redisConnectionFactory()) .cacheDefaults(config) .transactionAware() .build(); return manager; } }
以上代码中,我们使用 RedisCacheConfiguration 配置了 RedisCache 的相关参数,比如缓存过期时间和是否缓存空值。然后使用 RedisCacheManagerBuilder 创建 RedisCacheManager。
总结
Redis 是一种高性能键值数据库,它广泛用于缓存和会话管理。在 Java 应用中使用 Redis,我们可以通过配置类来方便地管理 Redis 连接池、数据类型转换等功能。本文介绍了 Redis Configuration 配置类中常用的注解,希望对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654ecee07d4982a6eb7e1c65