Redis缓存操作记录

本文详细介绍Spring Cache注解@CachePut、@CacheEvict、@Cacheable的使用方法,结合Redis实现数据缓存,包括数据插入、查找、更新及自定义缓存管理器的配置。同时讲解了如何在Spring应用中启用缓存支持,以及如何利用注解控制缓存的存取和更新策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis相关配置:

1)第一步:在application.properties中配置缓存管理器:

其中:

spring.cache.type  缓存类型

spring.cache.chache-names 缓存名称,多个名称可以使用逗号分隔

2)第二步 :加入驱动缓存的注解@EnableCaching

3)第三步:Redis配置

操作记录:

1.添加数据

@CachePut注解将方法结果作为值返回存放在缓存中,其中键是key。

    /**
     * 测试@CachePut:表示将方法结果返回存放缓存中
     * @param user
     * @return
     */
    @GetMapping("/user/insert")
    @CachePut(value="redisCache",key="'redis_user_'+#result.id")
    public User insert(User user){
        user.setUsername("小芳");
        user.setBirthday(new Date());
        user.setSex("1");
        user.setAddress("上海");
        userXmlMapper.insertUser(user);
        System.out.println("user.id---------"+user.getId());
        return user;
    }

#result代表返回结果对象,这里是一个User对象。#result.id是取出属性id,这里的id的值为38。value="redisCache",我们配置了对应的缓存的名称是redisCache,这样它就能引用到对应的缓存了。

2.查找数据

@Cacheable注解查询数据 :表示从缓存中通过定义的键查询,如果可以查询到数据,则返回,否则执行该方法,返回数据,并且将返回的结果保存到缓存中。

    /**
     * 获取用户的值
     * @Cache表示先从缓存中同通过定义的键查询,如果可以查询到数据,就返回,否则执行该方法返回数据
     * 并将结果保存到缓存中
     * @param username
     * @return
     */
    @RequestMapping(path="/user/getUser")
    @Cacheable(value="redisCache",key="'redis_user_'+#id")
    public User getUser(int id){
        System.out.println("执行了getUser....");
        return userXmlMapper.getUser(id);
    }

这里使用redis_user_和传入id值作为key。

3.更新数据:

    /**
     * 跟新数据
     * @param username
     * @return
     * 更新语句,如果原先缓存中不存在
     * #result!=null 如果返回Null,则方法返回之后不再操作缓存
     * 如果返回的user为空,就不操作缓存
     */
    @GetMapping(path="/user/updateUserName")
    @CachePut(value="redisCache",condition = "#result!='null'",key="'redis_user_'+#id")
    public User updateUserName(int id,String userName){
        //????
        User user = this.getUser(id);
        if(user==null){
            return null;
        }
        user.setUsername(userName);
        userXmlMapper.updateUser(user);
        return user;
    }

1)这里的Condition = "#result!='null' ",如果返回null,则方法返回之后就不再操作缓存。

2)在updateUserName方法中调用getUser方法,此时并不存在读取缓存,因为AOP没有生效

4.自定义缓存管理器

1)Redis使用#{cacheName}:#{key}的形式作为健保存数据,如果我们想自定义前缀

2)设置超时时间

#禁用前缀
spring.cache.redis.use-key-prefix=false
#自定义前缀
spring.cache.redis.key-prefix=
#定义超时时间
spring.cache.redis.time-to-live=60000

相关的注解说明

Spring缓存注解@CachePut , @CacheEvict,@CacheConfig使用 - 路途寻码人 - 博客园

跟上,别掉队了,Spring系列第40篇了,你学到了多少? (qq.com)

Spring中@EnableCaching如何集成redis?? (qq.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值