Redis是一个很棒的产品,单线程,高读写是它的核心
spring整合redis
- Spring使用原生redisTemplate(数据一致性要求不高)
- Spring基于注解整合Redis实现内容缓存(要求一致性高)
统一配置项目pom.xml文件(在整合项目dao层)
1.添加redis依赖版本
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
2.添加redis配置文件
1 | # Redis settings |
3.在web层添加utils
1 | package com.wwj.utils; |
4.在容器中配置redis实例
1 | <?xml version="1.0" encoding="UTF-8"?> |
注解含义
- @Cacheable:表明在进入方法之前,Spring会先去缓存服务器中查找对应key的缓存值,如果找到缓存值,那么Spring将不会再调用方法,而是将缓存值独处,返回给调用者;如果没有找到缓存值,那么Spring就会执行你的方法,将最后的结果通过key保存到缓存服务器中。
- @CachePut:表明Spring会将该方法返回的值缓存到缓存服务器中,这里需要注意的是,Spring不会事先去缓存服务器中查找,而是直接执行方法,然后缓存。换句话说,该方法始终会被Spring所调用。
- @CacheEvict:表示执行方法后从缓存服务器移除对应key的值;
加深理解
1 | @Cacheable(value="xxx" key="zzz")注解:标注该方法查询的结果进入缓存,再次访问时直接读取缓存中的数据 |
1 | * @CacheEvict()注解:移除指定缓存区间的一个或者多个缓存对象 |
代码操作示例(数据一致性不高)
1.建一张用户表模拟数据以及封装的resultmap对应的vo对象(需要被序列化)
2.构建服务层以及dao层和controller层
1 | package com.wwj.controller; |
代码操作示例(数据一致性高)以及增加或者删除修改数据后清空缓存
1 | package com.wwj.service.impl; |
代码地址详见