SpringBoot集成Redis实现缓存的简单应用

1.导入依赖:

<!--        redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2.application配置文件

# redis配置
# 指定redis的主机地址
spring.redis.host=192.168.159.128   // 这个是redis的运行主机地址,我是在docker上部署的,本机配            
                                        置的就是本机地址,虚拟机配置的就是虚拟机地址
#logging.level.com.example.demo_crud.mapper=debug
#debug=true
# Redis服务器连接密码(默认为空)
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=5000
# Redis数据库索引(默认为0)
spring.redis.database=0

3.新建RedisConfig配置文件进行redis序列化配置

/**
 * @Author: L
 * @Date: 2022/3/30 13:26
 * @Description: *
 */
@Configuration
public class RedisConfig {
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        //初始化一个RedisCacheWriter
        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
        //设置CacheManager的值序列化方式为json序列化
        RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
        RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair
                .fromSerializer(jsonSerializer);
        RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()
                .serializeValuesWith(pair);
        //设置默认超过期时间是30秒
        defaultCacheConfig.entryTtl(Duration.ofSeconds(30));
        //初始化RedisCacheManager
        return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
    }
}

4.对比较常用的数据查询操作增加redis缓存

// getall 获取所有商品数据
public List<Goods> getAll() {
    // 将返回商品数组转换为jsonString
    String goodsliststring = JSON.toJSONString(goodsMapper.getAll());
    // 岁redis数据库进行KV操作
    ValueOperations<String, String> valueops = redisTemplate.opsForValue();
    // 将所有商品数据放入缓存
    valueops.set(goodsListKey,goodsliststring);
    // 获取redis数据库中的数据
    String goodsListJson = valueops.get(goodsListKey);
    // 判断redis中是否有数据,如果有数据直接在redis中拿,没有则去数据库查询
    if(!StringUtils.isEmpty(goodsListJson)){
        return  goodsMapper.getAll();
    }
    return goodsMapper.getAll();
}

5.在进行更新或者删除操作时加上对redis的清除操作,实现redis缓存的清除更新

// 根据ID删除数据库中信息
public boolean deleteById(int id){
  // 自己定义需要的redis清除缓存操作
    redisTemplate.delete(redisTemplate.keys("goods*")); // 删除正则匹配goods*系列key的缓存
    boolean flag = false;
    try{
        userMapper.deleteById(id);
        flag = true;
    }catch (Exception e){
        e.printStackTrace();
    }
    return flag;
}

这个只是redis最简单的应用了,我也是才开始接触,有错误的地方欢迎指出哈。

大家一起学习一起进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值