网站设计方案案例分析,怎么样提高网站排名,物业管理网站开发背景,网站建设300目录 什么是缓存#xff1f; 缓存的作用#xff1f;
缓存的成本#xff1f;
实际项目中的应用 代码展示 什么是缓存#xff1f;
缓存就是数据交换的缓冲区#xff08;称作Cache [ kʃ ] #xff09;#xff0c;是存贮数据的临时地方#xff0c;一般读写性能较高。 缓…目录 什么是缓存 缓存的作用
缓存的成本
实际项目中的应用 代码展示 什么是缓存
缓存就是数据交换的缓冲区称作Cache [ kæʃ ] 是存贮数据的临时地方一般读写性能较高。 缓存的作用 降低后端负载 提高读写效率降低响应时间
缓存的成本 数据一致性成本多了一份缓存中的数据 代码维护成本代码复杂度上升 运维成本会有缓存雪崩等一系列问题
实际项目中的应用
举个栗子下面的代码就是直接查询数据库的方法 /*** 根据id查询商铺信息* param id 商铺id* return 商铺详情数据*/GetMapping(/{id})public Result queryShopById(PathVariable(id) Long id) {return Result.ok(shopService.getById(id));} 它的理论模型就应该是这样的 如果接入了缓存之后的模型应该是这样的 此时的业务逻辑如下图所示 代码展示
现在根据上面的逻辑自己定义一个方法引入缓存 GetMapping(/{id})public Result queryShopById(PathVariable(id) Long id) {return shopService.queryById(id);}public interface IShopService extends IServiceShop {Result queryById(Long id);
} Service
public class ShopServiceImpl extends ServiceImplShopMapper, Shop implements IShopService {Resourceprivate StringRedisTemplate stringRedisTemplate;Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;//1.从redis中查询店铺缓存String jsonShop stringRedisTemplate.opsForValue().get(key);//2.判断是否存在if (StrUtil.isNotBlank(jsonShop)) {//3.存在直接返回Shop shop JSONUtil.toBean(jsonShop, Shop.class);return Result.ok(shop);}//4.不存在根据id查询数据库Shop shop getById(id);//5. 不存在 返回错误if(shop null){return Result.fail(店铺不存在);}// 6. 存在 写入 redisstringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shop));//7.返回return Result.ok(shop);}
} 重新运行进行测试可以提前知道第一次查询是没有缓存中的数据的走的是数据库这次的响应时间为 此时redis中已经有了缓存数据 再次请求