SpringBoot-Redis

2024-01-07 18:24:20

依赖

<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);
}

文章来源:https://blog.csdn.net/h_e_l_l_o_______/article/details/135434374
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。