首先:保证你要保证redis是启动状态,打开你redis目录中的redis-server.exe
我习惯用cmd,输入命令redis-server.exe
弹出下面的窗口证明正常启动了,默认端口是6379
1.在你的pom文件中导入redis的依赖,我这里还导了一份连接池的依赖(可以使性能更好一点)
org.springframework.boot spring-boot-starter-data-redisorg.apache.commons commons-pool2com.alibaba fastjson1.2.67
2.在application.yml文件中加入配置,主机我写的是本机,
但是在公司里面可能会根据公司服务器的进行配置
spring:
redis:
port: 6379
host: localhost
cache:
cache-names: xxx,yyy # 缓存前缀
type: redis # 缓存类型
redis:
cache-null-values: true # 允许Redis缓存空值
key-prefix: dacai_
time-to-live: 0ms # 缓存超时时间戳,配置为0则永不过期
use-key-prefix: true # 启用Redis的键前缀
3.创建一个redis配置类
@Configuration //标识这是一个配置类
@EnableCaching //启动缓存注解
// 继承缓存配置的支持类
public class RedisConfig extends CachingConfigurerSupport {
@Autowired //可注入,也可以直接写在方法中
private RedisConnectionFactory connectionFactory;
@Bean
public RedisTemplate
4.创建一个简单的redis控制器类
@RestController
public class RedisController {
//Redis操作模板
@Autowired
private RedisTemplate redisTemplate;
//set数据
@GetMapping("/set/{key}/{value}")
public Object set(@PathVariable("key") String key,
@PathVariable("value") String value){
redisTemplate.opsForValue().set(key,value);
return "set ok";
}
//get数据
@GetMapping("/get/{key}")
public Object get(@PathVariable("key") String key){
return redisTemplate.opsForValue().get(key);
}
//set数据
@GetMapping("/set/{key}")
public Object setObj(@PathVariable("key") String key){
redisTemplate.opsForValue().set(key,new Emp(100L,18,new Date(),"张三",20000.0,"北京"));
return "set ok";
}
}
注: 我的实体类:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder // 可以在测试类直接点属性
@Accessors(chain = true) // 开启链式编程
public class Emp implements Serializable {
private Long id;
private Integer age;
@JsonFormat(pattern = "yyyy-MM-dd" )
private Date birthday;
private String name;
private Double sal;
private String homeAddress;
}
5.在业务层加上缓存注解:,(下面还用了另一种方式操作缓存)
@Service
@Slf4j
public class EmpServiceImpl implements EmpService {
@Resource
private EmpMapper empMapper;
@Autowired
private RedisTemplate redisTemplate;
@Override
@Cacheable(cacheNames = "xxx",key = "'getEmpList'")
public List getEmpList() {
return empMapper.getAllEmp();
}
@Override
@CachePut(cacheNames = "xxx",key = "'emp:id:' + #emp.id")
public Emp addEmp(Emp emp) {
empMapper.addEmp(emp);
return emp;
}
@Override
@Cacheable(cacheNames = "xxx",key = "'emp:id:'+ #id")
public Emp getEmpById(Long id) {
return empMapper.getEmpById(id);
}
@Override
@CachePut(cacheNames = "xxx",key = "'emp:id:' + #emp.id")
// 想将数据写入缓存,方法必须有返回值
public Emp updateEmp(Emp emp) {
empMapper.updateEmp(emp);
redisTemplate.delete("xxx::getEmpList");
return emp;
}
@Override
@CacheEvict(cacheNames = "xxx",key = "'emp:id:' + #id")
public Long deleteEmpById(Long id) {
empMapper.deleteEmpById(id);
redisTemplate.delete("xxx::getEmpList");
return id;
}
}



