1.引入依赖

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

2.application.properties

spring.port=8080
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1
# 连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0

3.配置redisConfig

@Configuration
public class RedisConfig extends CachingConfigurerSupport { @Bean("oneKeyGenerator")
public KeyGenerator getKeyGenerator (){
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
} ;
}
}

4.测试接口

package com.example.cache.service;

import com.example.cache.domain.User;

public interface UserService {
User addUser(User user); User updateUser(Integer id); User selectUser(Integer id); void deleteUser(Integer id);
}

5.实现类

@Service
public class UserServiceImpl implements UserService { // 生成redis中的key名字为userCache::
@CachePut(value = "userCache",key = "#user.id")
@Override
public User addUser(User user) {
return user;
} // 生成redis中的key名字为userCache::1
@Cacheable(cacheNames = "userCache",key = "#id",sync = true)
@Override
public User selectUser(Integer id) {
User user = new User();
user.setId(id);
user.setName("cicada5mile");
System.out.println("执行数据库查询");
return user;
} // 删除缓存中的key名字为userCache::1
@CacheEvict(value = "userCache",key = "#id",beforeInvocation = true)
@Override
public void deleteUser(Integer id) { }
}

6.测试方法

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = CacheApplication.class)
public class UserTest { @Resource
UserService userService; @Test
public void testAdd (){
User user = new User() ;
user.setId(1);
user.setName("cicada");
userService.addUser(user) ;
} @Test
public void testSelect (){
userService.selectUser(1) ;
} @Test
public void testDelete (){
userService.deleteUser(3) ;
}
}

7.补充说明

@Cacheable
@CacheEvict
使用@Cacheable标记的方法在执行后Spring Cache将缓存其返回结果,
而使用@CacheEvict标记的方法会在方法执行前或者执行后移除Spring Cache中的某些元素
@CachePut也可以声明一个方法支持缓存功能。与@Cacheable不同的是使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。

8.redis样例

最新文章

  1. document.domain
  2. InnoDB与Myisam的六大区别
  3. 《zw版&#183;Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册
  4. LRU设计
  5. JS代码片段:日期格式化
  6. JetBrains发布了一款免费的.NET反编译器dotPeek
  7. EasyUI特殊情况下的BUG整理
  8. 阿里云ECS每天一件事D8:nginx1.7整合php5.4
  9. &amp;与&amp;&amp; C语言
  10. TypeScript基本知识(为学习AngularJS2框架做个小铺垫)
  11. hdu_1754I Hate It(线段树)
  12. Angular5 路由传参的3种方法
  13. python获取指定时间差的时间
  14. 2018年最新JAVA面试题总结之基础(1)
  15. [再寄小读者之数学篇](2014-06-22 最大值点处导数为零的应用 [中国科学技术大学2012 年高等数学B考研试题])
  16. docker学习笔记(3)
  17. 【Luogu4916】魔力环(Burnside引理,组合计数)
  18. 使用Rancher的RKE快速部署Kubernetes集群
  19. 同步手绘板——PC端实现画板
  20. ospf精确宣告地址

热门文章

  1. PHP版DES算法加密数据
  2. nginx 完美解决tp3.2.3 404问题
  3. 【接口参数解析BUG】SpringMVC接口参数解析
  4. 【网络协议】OSI七层模型 和TCP/IP五层模型
  5. Spring Cloud 微服务架构整理记录与示例首页
  6. 缓冲区溢出分析第04课:ShellCode的编写
  7. Linux日志分析和管理
  8. python 压缩模块大杂烩(zipfile,bz2,lzma,gzip,tarfile,zlib)
  9. MSF和CobaltStrike联动
  10. 你注意到了吗?修改API文档也需要规范!