Redis缓存操作记录

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)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值