Springboot-集成Redis 配置双Redis操作模板 -批量模糊根据key删除数据
pom.xml 导入jar包
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-data-redisartifactId> dependency>
application-development.yml 配置 或者叫:application.yml
#spring-ehcache的配置
cache:
type: redis # redis/ehcache, 在这里设置你使用的缓存框架,如果不想使用redis,请改成ehcache
ehcache:
config: classpath:ehcache.xml
redis:
host: localhost
port: 6379
expireTime: 3600000 #单位秒
java代码配置 配置双实例 因为框架已经用了
redisTemplate 了 且用object做了 key的代码开发,为避免不影响使用
redisTemplate 的代码失效,所以新配置一个实例 用String 做key 可以模糊匹配key
redisTemplate2 对key做了序列化处理,所以可以使用
Setkeys = redisTemplate.keys(pattern); 这个功能
package com.jeeplus.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.cache.RedisCacheWriter; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * redis缓存配置 */ @ConditionalOnProperty(name = "spring.cache.type", havingValue = "redis") @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { /** * RedisTemplate配置 * * @param connectionFactory * @return */ @Bean(name="redisTemplate") public RedisTemplateredisTemplate(RedisConnectionFactory connectionFactory) { // 配置redisTemplate RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(connectionFactory); return redisTemplate; } @Bean(name="redisTemplate2") public RedisTemplate redisTemplate2(RedisConnectionFactory connectionFactory) { // 配置redisTemplate RedisTemplate redisTemplate = new RedisTemplate<>(); // key的序列化采用StringRedisSerializer redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setConnectionFactory(connectionFactory); return redisTemplate; } @Bean public CacheManager cacheManager(RedisConnectionFactory connectionFactory) { //初始化一个RedisCacheWriter RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory); //设置CacheManager的值序列化方式为JdkSerializationRedisSerializer,但其实RedisCacheConfiguration默认就是使用StringRedisSerializer序列化key,JdkSerializationRedisSerializer序列化value,所以以下注释代码为默认实现 ClassLoader loader = this.getClass().getClassLoader(); JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader); RedisSerializationContext.SerializationPair