面向小白的SpringBoot的Redis模板操作数据

326 阅读2分钟

这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战

昨天又翻了源码,把缓存类型看的明明白白,大家以后遇到类似的需要问题后,也可以参考这个代码,进行业务完成,那我们今天讨论的是Redis的其它玩法。

RedisProperties

我们挑主要的看,这是redis的基本配置,比如url,host和port image.png

然后是集群、哨兵和超时的配置 image.png

然后是池子配置,指定了最大空闲和最小空闲,还有最大活跃的数量。 image.png

集群的配置,可以配置节点和重定向次数 image.png

主从节点的配置 image.png

ok,那让我们配置一下

搞配置

spring.redis.host=localhost
spring.redis.lettuce.pool.maxActive=5
spring.redis.lettuce.pool.maxIdle=5

RedisTemplate

jedis是redis官方提供的操作redis的类,而RedisTemplate是Spring框架给我们提供的Redis操作的模板,所以我们前面铺垫的目的都是为了更好的操作这个模板。

首先要生成一个RedisTemplate模板,代码如下:

image.png

这个Bean注解会把生成的对象交给Spring管理,然后我们就有了这个对象。

@Autowired
private RedisTemplate<String, Coffee> redisTemplate;

这个对象的String是代表放入的key的类型,用啥放就用啥类型取。 我们注入这个对象,然后先获取它这个操作

HashOperations<String, String, Coffee> hashOperations = redisTemplate.opsForHash();

然后根据这个操作,我们来查询个数据试试

if (redisTemplate.hasKey(CACHE) && hashOperations.hasKey(CACHE, name)) {
    log.info("Get coffee {} from Redis.", name);
    return Optional.of(hashOperations.get(CACHE, name));
}

如果没有获取到,那我们就得放入数据,放入之前先去数据库查询,查询代码前面讲过,就不演示了。

放入数据的时候用put方法,然后指定一个过期时间就行,代码比较简单就不演示了。

if (coffee.isPresent()) {
    log.info("Put coffee {} to Redis.", name);
    hashOperations.put(CACHE, name, coffee.get());
    redisTemplate.expire(CACHE, 1, TimeUnit.MINUTES);
}