Spring Cache 和Redis 小记
springcache和redis通常结合使用,本次小项目的pom.xml中需加入redis的jar

Spring Cache
查询建议:@Cacheable
增删改建议:@CacheEvict
@Transactional注解(声明式事务管理):
本质为对方法前后进行拦截,在目标方法开始之前创建或者加入一个事务,在执行完成后根据执行情况提交事务或者回滚事务。
优点:
不需要通过编程方式管理事务,只需在配置文件中做相关事务规则声明,或者采用
@Transactional注解的方式将事务规则应用到业务逻辑中。
- @Cacheable:
红色部分(key):表示缓存key,用来指定Spring 缓存方法返回结果时所对应的key值(如果没有指定key,Spring会使用默认策略来生成key)。
—相当于sql语句中的……where id = ?
(默认为空)
此时为查找和删除操作,即只需要根据id来操作。
蓝色部分(cacheNames/value):即“缓存名称”(不能为空),表示该方法的缓存的返回结果是被缓存到哪一个缓存区域,即相对应的缓存区的名称。(可以为一个cache也可以是cache数组(多个cache))。
黄色部分(相当于key/value中的后者):即要在缓存中缓存的返回值。- @CacheEvict:
红色部分:同上
蓝色部分:同上
此时为增加/修改操作,即放进来的是一个对象,那么key值就是此对象中的id。
注意:为了避免更新时缓存key重复而覆盖原值导致数据丢失,在定义key值时最好确保其唯一性。(建议”#active.id”+’andOrUpdate’(方法名))
- @CacheEvict:
Redis
注意:如果用RedisTemplate<>,类型必须要比父类的类型小
Redis的opsForValue( )方法
set(K key,V value):新增一个字符串类型的值,key是键,value是值。
get(Object key):获取key键的相对应的值。
使用Spring Cache /redis 时 ,如果在缓存中存在相同的内容,且不是相同类,则在postman查询时会报错:
docker 安装 redis
方法一:docker serch redis(搜镜像然后下载)
方法二(推荐):https://hub.docker.com/
查找所需镜像用 docker pull xxx 下载
docker pull redis(不加版本号默认为最新版)
第一次运行
docker run -di --name=myproject_myredis -p 6379:6379 redis
正常启动
docker start xxx