前言:
上回书说到,缓存可以减轻服务器压力,减少网络延迟,加快页面打开速度。那么本篇会基于一个springboot的小案例来分析添加Redis缓存后的页面是否会提升打开速度。
1、Redis简介
Redis 是一个高性能的 Key-Value 开源数据库, 是一个非关系型的数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案。但它不能替代关系型数据库,只能作为特定环境下的扩充。
2、添加Redis缓存
我们的案例是一个基于springboot的商铺点评系统,我们使用其中一个页面来为其添加Redis缓存,这张图片我们可以看到,URL地址获取到的内容就是这个商铺的全部信息,我们要在后端找到这个接口并为其添加Redis缓存。
添加Redis缓存之前,要先把流程想清楚,左边是缓存的作用模型图,右边是添加Redis缓存的流程图:获取前端传过来的商品id并在Redis中查询商铺信息是否存在----->若存在则直接向前端返回商铺信息----->若不存在则要在数据库中查询该商品并添加到Redis缓存中去并返回商铺信息----->若数据库内并没有该商铺信息就会报错。
代码实现:
@Resource
private StringRedisTemplate stringRedisTemplate;
@Override
public Result queryById(Long id) {
//根据商店id提前生成商店的key值
String key="cache:shop:" + id;
// 1.从Redis中查询商铺缓存
String shopJson = stringRedisTemplate.opsForValue().get(key);
// 2.判断是否存在
if (StrUtil.isNotBlank(shopJson)) {
// 3.存在,直接返回
Shop shop = JSONUtil.toBean(shopJson, Shop.class);
return Result.ok(shop);
}
// 4.不存在,根据id查询数据库
Shop shop = getById(id);
// 5.若数据库中不存在,返回错误
if (shop==null) {
return Result.fail("店铺不存在!");
}
// 6.存在,写入Redis
stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shop));
// 7.返回店铺信息
return Result.ok(shop);
}
重启程序并刷新商铺查询页面,发现在第一次刷新页面时,前端获取到商铺信息时间是19ms,这就意味着数据库中的商铺信息已经被添加至Redis缓存中去了。
打开Redis图形化界面,我们看到商铺的信息已经存在。
那么见证奇迹的时刻到了!再次刷新这个商铺的展示页面,我们就可以清晰的看到前端获取该商铺的信息时间是6ms!!这足以体现出缓存的功能。
别忘了点赞收藏哦~