依赖
<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 {@Beanpublic 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");// 删除keyredisTemplate.delete(new String[]{"k", "k2"});// key递增:递增因子需要大于0redisTemplate.opsForValue().increment("k",1);
}