springboot之redis缓存(一)

springboot整合redis作为缓存

(一)新建工程,建立数据库及相关表,添加缓存注解

新建springboot工程时,选择I/O下的cache组件,就自动配置了cache依赖。

在这里插入图片描述
在MySQL中新建spring_cache数据库,并添加两张表:
在这里插入图片描述
项目中加入bean:

在这里插入图片描述
Mybatis操作数据库时,在mapper写入对部门和员工的增删改查语句,并在主程序设置mapperscan的地址(项目启动时会按照该路径扫描mapper):
在这里插入图片描述
在这里插入图片描述
项目层次结构
以下分别对应数据,控制和服务层:
在这里插入图片描述
在这里插入图片描述

总体层次架构

在这里插入图片描述
层级之间的关系原理:将服务层注入控制层,控制层处理网页交互的任务
在这里插入图片描述
将mapper接口注入服务层,为服务层的功能实现提供具体的增删改查方法
在这里插入图片描述举例来说,mapper中employeeMapper接口语句如下:

@Select("SELECT * FROM employee WHERE id=#{id}")
    public Employee getEmpById(Integer id);
    @Update("UPDATE employee SET lastName=#{lastName},email=#{email},gender=#{gender},d_id=#{dId} WHERE id=#{id}")
    public void updateEmp(Employee employee);
    @Delete("DELECT FROM employee WHERE id=#{id}")
    public void deleteEmpById(Integer id);
    @Insert("INSERT INTO employee(lastName,email,gender,d_id) VALUES(#{lastName},#{email},#{gender},#{dId})")
    public void insertEmployee(Employee employee);
    @Select("SELECT * FROM employee WHERE lastName=#{lastName}")
    public Employee getEmpByName(String lastName);

下面介绍通过注解的方式来使用缓存,对程序启动类加入@EnableCaching,service内部的方法上加入注解@Cacheable(cacheNames = {“emp”})
在这里插入图片描述
WARNING:缓存配置原理:
@cacheable注解的方法在执行前,先查询缓存,按照参数的值查询,若缓存中有,则返回缓存的数据,若没有,则调用方法,并将方法返回值存入缓存。
其中,cacheManager按照缓存名字得到cache组件,key使用可以generator来生成

几个注解

@cacheput,更新缓存,每次调用,将返回值放入缓存,用@cacheput做更新操作时,需要将key和查询时的key修改一致,才能保证在更新时使缓存中的数据关于指定ID被更新。由于cacheable有先查缓存的步骤,所以不能用result做key,可能还没有生成result,但put在方法执行之后,所以可以用result做key

@CacheEvict,清除缓存,其内置参数中:

allEntries:清楚所有缓存数据
beforeInvocation:默认false,方法正常结束之后才清除缓存,若方法有错误,则不清除缓存

@caching组合注解

@Caching(
        cacheable = {
                @Cacheable(value = "emp",key = "#lastName")
        },
        put ={//put在所注解的方法执行之后执行,所有有了result
                @CachePut(value = "emp",key = "#result.id"),
                @CachePut(value = "emp",key="#result.email")
        }
)
public Employee getEmpByLastName(String lastName){
    return employeeMapper.getEmpByName(lastName);
}

caching里面只要put,则一定会执行其注解的方法(本例为getEmpByLastName),用那么查询时一定会调用数据库。

也可以在@service上添加@cacheconfig全局注释,公共配置cache信息:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值