依赖
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
配置
# 服务器连接端口
spring.redis.port=6379
# 服务器地址
spring.redis.host=127.0.0.1
# 数据库索引(默认为0)
spring.redis.database=0
# 服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(负数表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(负数表示没有限制)
spring.redis.jedis.pool.max-wait=-1ms
# 连接池最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=5000ms
自定义RedisTemplate
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
// 创建模板实例
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 配置序列化的方式
// json方式
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
redisTemplate.setKeySerializer(new Jackson2JsonRedisSerializer(Object.class));
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// String方式
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// 设置不同数据类型的序列化方式
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
使用
@Autowired
private RedisTemplate redisTemplate;
@Test
void contextLoads() {
// 操作不同的数据类型
// 字符串
redisTemplate.opsForValue();
// 集合
redisTemplate.opsForList();
redisTemplate.opsForHash();
redisTemplate.opsForSet();
redisTemplate.opsForZSet();
// 地图
redisTemplate.opsForGeo();
// 存、取值
redisTemplate.opsForValue().set("k", "v");
redisTemplate.opsForValue().get("k");
// 设置缓存失效时间
redisTemplate.expire("k", 30l, TimeUnit.SECONDS);
// 获取失效时间
redisTemplate.getExpire("k",TimeUnit.SECONDS);
// 判断key是否存在
redisTemplate.hasKey("k");
// 删除key
redisTemplate.delete(new String[]{"k", "k2"});
// key递增:递增因子需要大于0
redisTemplate.opsForValue().increment("k",1);
}