1.Redis单机版:
(1)第一种:springBootStrap自动配置:
- 目录结构
- 引入spring-boot-starter-redis.jar
org.springframework.boot spring-boot-starter-redis 1.4.4.RELEASE
- SpringBoot运行类打注解开启redis缓存
package cn.qlq;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication@EnableCaching//开启redis缓存public class MySpringBootApplication { public static void main(String[] args) { //入口运行类 SpringApplication.run(MySpringBootApplication.class, args); }}
- application.properties添加redis配置
server.port=80logging.level.org.springframework=DEBUG#springboot mybatis#jiazai mybatis peizhiwenjian#mybatis.mapper-locations = classpath:mapper/*Mapper.xml#mybatis.config-location = classpath:mapper/config/sqlMapConfig.xml#mybatis.type-aliases-package = cn.qlq.bean#shujuyuanspring.datasource.driver-class-name= com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8spring.datasource.username = rootspring.datasource.password = 123456#redisspring.redis.host=localhostspring.redis.port=6379
- Service中打缓存注解:
package cn.qlq.service.impl;import java.sql.SQLException;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cache.annotation.CacheEvict;import org.springframework.cache.annotation.Cacheable;import org.springframework.stereotype.Service;import cn.qlq.bean.User;import cn.qlq.mapper.UserMapper;import cn.qlq.service.UserService;@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Cacheable(value="findAllUser",key="1")//在redis中开启key为findAllUser开头的存储空间 public ListfindAllUser(Map condition) { System.out.println("打印语句则没有走缓存"); List list = userMapper.findAll(); return list; } @Override @CacheEvict(value="findAllUser",allEntries=true)//执行此方法的时候删除上面的缓存(以findAllUser为名称的) public int addUser() throws SQLException { // TODO Auto-generated method stub return userMapper.addUser(); }}
- 测试:
(1)访问:http://localhost/list?name=1(第一次不走缓存)
再次访问:
没有打印语句,也就是没有走方法。
(2)http://localhost/list?name=2(第一次不走缓存)
再次访问:
没有打印语句,也就是没有走方法。
(3)访问:http://localhost/list?name=1
没有打印语句,也就是没有走方法。还是走的缓存。
查看Redis缓存的key:
RedisDesktopManager查看:
- 测试清除缓存:
查看Redis缓存的key发现为空:
总结:
注解上的findAllUser是key的前缀,相当于findAllUser:xxxx,后面的是spring自动根据函数的参数生成,如果redis存在则不走方法,直接取出缓存,如果是参数不同,则走方法且加入缓存。
清除缓存的时候只会清除缓存key前缀是findAllUser开头的,如果是自己手动添加的以findAllUser:开头的也会被清除。如下面的在执行add方法的时候也会被清除:
127.0.0.1:6379> set findAllUser:mykey testOK