配置CacheManager时,需参考博文:springboot2.0 redis EnableCaching的配置和使用。RedisCacheManager构造函数需提供RedisOperations实例,即RedisTemplate。在创建缓存时,通过RedisCache构造函数传入redisOperations。
采用全局通用的序列化器GenericJackson2JsonRedisSerializer,调试发现序列化内容加入对象的类型信息。此序列化器通过Jackson的ObjectMapper实现序列化与反序列化,开启默认类型配置。使用Protostuff自定义序列化与反序列化工具,测试结果显示同样加入对象类型信息。JdkSerializationRedisSerializer内部使用ObjectInputStream与ObjectOutputStream完成序列转换与反序列化,发现序列化内容同样加入类型信息。若要缓存的Java对象需实现Serializable接口,否则将引发特定错误。
当设置Jackson2JsonRedisSerializer,内部序列化过程通过Jackson ObjectMapper完成,不包含对象类型信息。使用此序列化器时需指定缓存对象类型。通过实现不同RedisCache对应不同RedisTemplate(即不同序列化器)的策略,实现自定义RedisCacheManager。RedisCacheManager通过加载自定义配置实现类RedisCacheConfigurationProvider获取不同RedisCache的配置。自定义RedisCache配置提供者抽象类,根据不同的缓存类型设置不同序列化器,允许用户根据缓存名称设置不同存储类型。
复合CacheManager通过实现给定的委托CacheManager实例集合,配置多个CacheManager,每个CacheManager可配置不同序列化器。注意,如果复合管理器委托的常规CacheManagers在请求时回退到命名缓存的延迟创建,需确保它们能处理未知缓存名称的情况,或在请求时自动创建缓存区域。通过这种方式,可以灵活配置不同缓存的序列化策略。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。