You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
3.2 KiB

2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
  1. package com.example.demo.config;
  2. import com.example.demo.domain.vo.WorkbenchCard;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.boot.autoconfigure.cache.CacheProperties;
  5. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  6. import org.springframework.cache.annotation.EnableCaching;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.data.redis.cache.RedisCacheConfiguration;
  10. import org.springframework.data.redis.connection.RedisConnectionFactory;
  11. import org.springframework.data.redis.core.RedisTemplate;
  12. import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
  13. import org.springframework.data.redis.serializer.RedisSerializationContext;
  14. import org.springframework.data.redis.serializer.StringRedisSerializer;
  15. @Configuration
  16. @EnableCaching
  17. @EnableConfigurationProperties(CacheProperties.class)
  18. public class RedisConfig {
  19. @Autowired
  20. CacheProperties cacheProperties;
  21. @Bean
  22. public RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) {
  23. RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
  24. config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));
  25. config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
  26. CacheProperties.Redis redis = cacheProperties.getRedis();
  27. if (redis.getTimeToLive() != null) {
  28. config = config.entryTtl(redis.getTimeToLive());
  29. }
  30. if (!redis.isCacheNullValues()) {
  31. config = config.disableCachingNullValues();
  32. }
  33. if (!redis.isUseKeyPrefix()) {
  34. config = config.disableKeyPrefix();
  35. }
  36. return config;
  37. }
  38. @Bean
  39. public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
  40. RedisTemplate<String, Object> template = new RedisTemplate<>();
  41. template.setConnectionFactory(factory);
  42. // 设置键的序列化方式为 String
  43. template.setKeySerializer(new StringRedisSerializer());
  44. template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
  45. // 设置 Hash 的 Key 和 Value 的序列化方式
  46. template.setHashKeySerializer(new StringRedisSerializer());
  47. template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
  48. return template;
  49. }
  50. @Bean
  51. public RedisTemplate<String, WorkbenchCard> workbenchCardRedisTemplate(RedisConnectionFactory factory) {
  52. RedisTemplate<String, WorkbenchCard> template = new RedisTemplate<>();
  53. template.setConnectionFactory(factory);
  54. // 设置键的序列化方式为 String
  55. template.setKeySerializer(new StringRedisSerializer());
  56. template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
  57. // 设置 Hash 的 Key 和 Value 的序列化方式
  58. template.setHashKeySerializer(new StringRedisSerializer());
  59. template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
  60. return template;
  61. }
  62. }