4Redis 缓存 · SpringCloud微服务实战 · 看云
导航
本节代码地址
在Redis 介绍篇,我们介绍了Redis 的特性和功能,Redis 这么流行不是没有原因的。本篇我们将实际使用Redis 来演示缓存功能的demo,读者可以利用docker run 一个(可以参照容器化章节)也可以使用本地起一个(windows)。因此我们装一个单机版即可,集群或者哨兵一般公司会有DBA负责。
1. 安装包下载
Redis 安装包地址https://github.com/microsoftarchive/redis/releases
下载目前最新的安装包
2. 启动
解压缩,配置全部用默认的
dos命令提示符,进入redis安装目录:
输入命令
redis-server redis.windows.conf
看到下面的日志即代表启动成功
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 43156
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[43156] 19 Mar 13:32:13.609 # Server started, Redis version 3.2.100
[43156] 19 Mar 13:32:13.611 * The server is now ready to accept connections on port 6379
3. 新建模块
下面我们新建模块来演示Redis缓存
需要在mave中添加redis 的包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
4. 核心方法
我们这里需要注入StringRedisTemplate的bean,通过redisTemplate.opsForValue()来读取和写入redis。在getUserById方法中先到redis查,查不到再去到数据库中查询。
@Service
@Slf4j
public class UserServiceImpl implements UserService {
@Autowired
private StringRedisTemplate redisTemplate;
@Override
public User getUserById(long id) {
String userRedis = redisTemplate.opsForValue().get(String.valueOf(id));
if(StrUtil.isEmpty(userRedis)){
User userByDao = getUserByDao(id);
if(null!=userByDao){
redisTemplate.opsForValue().set(String.valueOf(id),JSONUtil.toJsonStr(userByDao));
return userByDao;
}else{
return null;
}
}else{
log.info("我是缓存的,有点叼");
return JSONUtil.toBean(userRedis,User.class);
}
}
private User getUserByDao(long id) {
List<User> userList = initUser().stream().filter(user -> user.getId() == id).collect(Collectors.toList());
if (CollectionUtils.isEmpty(userList)) {
return new User(0, null, null, null, "这位顾客先拿一下腰牌!");
}
log.info("我是非缓存的,请多指教");
return userList.get(0);
}
5. 启动项目
浏览器或Postman输入http://localhost:8801/user/1可以看到控制台显示的日志
2020-03-19 16:09:27.078 INFO 4860 --- [nio-8801-exec-1] c.y.c.r.service.impl.UserServiceImpl : 我是非缓存的,请多指教
2020-03-19 16:09:32.448 INFO 4860 --- [nio-8801-exec-2] c.y.c.r.service.impl.UserServiceImpl : 我是缓存的,有点叼
2020-03-19 16:09:34.690 INFO 4860 --- [nio-8801-exec-4] c.y.c.r.service.impl.UserServiceImpl : 我是缓存的,有点叼
2020-03-19 16:14:37.440 INFO 4860 --- [nio-8801-exec-7] c.y.c.r.service.impl.UserServiceImpl : 我是缓存的,有点叼


