当前位置: 首页 > news >正文

Redis-实战篇-什么是缓存-添加redis缓存

文章目录

  • 1、什么是缓存
  • 2、添加商户缓存
  • 3、前端接口
  • 4、ShopController.java
  • 5、ShopServiceImpl.java
  • 6、RedisConstants.java
  • 7、查看Redis Desktop Manager

1、什么是缓存

缓存就是数据交换的缓冲区(称为Cache),是存贮数据的临时地方,一般读写性能较高。

在这里插入图片描述
在这里插入图片描述

2、添加商户缓存

在这里插入图片描述

3、前端接口

http://127.0.0.1:8080/api/shop/1

在这里插入图片描述

4、ShopController.java

package com.hmdp.controller;import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hmdp.dto.Result;
import com.hmdp.entity.Shop;
import com.hmdp.service.IShopService;
import com.hmdp.utils.SystemConstants;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;/*** <p>* 前端控制器* </p>*/
@RestController
@RequestMapping("/shop")
public class ShopController {@Resourcepublic IShopService shopService;/*** 根据id查询商铺信息* @param id 商铺id* @return 商铺详情数据*/@GetMapping("/{id}")public Result queryShopById(@PathVariable("id") Long id) {//return Result.ok(shopService.getById(id));return shopService.queryById(id);}/*** 新增商铺信息* @param shop 商铺数据* @return 商铺id*/@PostMappingpublic Result saveShop(@RequestBody Shop shop) {// 写入数据库shopService.save(shop);// 返回店铺idreturn Result.ok(shop.getId());}/*** 更新商铺信息* @param shop 商铺数据* @return 无*/@PutMappingpublic Result updateShop(@RequestBody Shop shop) {// 写入数据库shopService.updateById(shop);return Result.ok();}/*** 根据商铺类型分页查询商铺信息* @param typeId 商铺类型* @param current 页码* @return 商铺列表*/@GetMapping("/of/type")public Result queryShopByType(@RequestParam("typeId") Integer typeId,@RequestParam(value = "current", defaultValue = "1") Integer current) {// 根据类型分页查询Page<Shop> page = shopService.query().eq("type_id", typeId).page(new Page<>(current, SystemConstants.DEFAULT_PAGE_SIZE));// 返回数据return Result.ok(page.getRecords());}/*** 根据商铺名称关键字分页查询商铺信息* @param name 商铺名称关键字* @param current 页码* @return 商铺列表*/@GetMapping("/of/name")public Result queryShopByName(@RequestParam(value = "name", required = false) String name,@RequestParam(value = "current", defaultValue = "1") Integer current) {// 根据类型分页查询Page<Shop> page = shopService.query().like(StrUtil.isNotBlank(name), "name", name).page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE));// 返回数据return Result.ok(page.getRecords());}
}

在这里插入图片描述

5、ShopServiceImpl.java

package com.hmdp.service.impl;import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.hmdp.dto.Result;
import com.hmdp.entity.Shop;
import com.hmdp.mapper.ShopMapper;
import com.hmdp.service.IShopService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import static com.hmdp.utils.RedisConstants.CACHE_SHOP_KEY;/*** <p>*  服务实现类* </p>*/
@Service
public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements IShopService {@Resourceprivate StringRedisTemplate stringRedisTemplate;@Overridepublic Result queryById(Long id) {String key = CACHE_SHOP_KEY + 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、存在,写入redisstringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop));//7、返回return Result.ok(shop);}
}

在这里插入图片描述

6、RedisConstants.java

package com.hmdp.utils;public class RedisConstants {public static final String LOGIN_CODE_KEY = "login:code:";public static final Long LOGIN_CODE_TTL = 2L;public static final String LOGIN_USER_KEY = "login:token:";public static final Long LOGIN_USER_TTL = 36000L;public static final Long CACHE_NULL_TTL = 2L;public static final Long CACHE_SHOP_TTL = 30L;public static final String CACHE_SHOP_KEY = "cache:shop:";public static final String LOCK_SHOP_KEY = "lock:shop:";public static final Long LOCK_SHOP_TTL = 10L;public static final String SECKILL_STOCK_KEY = "seckill:stock:";public static final String BLOG_LIKED_KEY = "blog:liked:";public static final String FEED_KEY = "feed:";public static final String SHOP_GEO_KEY = "shop:geo:";public static final String USER_SIGN_KEY = "sign:";
}

在这里插入图片描述

7、查看Redis Desktop Manager

在这里插入图片描述

http://www.lryc.cn/news/383400.html

相关文章:

  • 《妃梦千年》第十一章:再遇故人
  • 反序列化底层学习
  • 项目训练营第五天
  • 数据收集和数据分析
  • Kubernetes(K8s)从入门到精通系列之十九:Operator模式
  • vuex的actions返回结果类型是promise及actions方法互相调用
  • 【干货】Jupyter Lab操作文档
  • iOS分享到微信,配置Universal Links,并从微信打开app,跳转到指定界面
  • 基于SSM构建的校园失眠与压力管理系统的设计与实现【附源码】
  • SAP 初始化库存移动类型561501511区别简介
  • 情感搞笑聊天记录视频:AI自动化生成技术,操作简单,教程+软件
  • RabbitMQ中lazyqueue队列
  • Java三层框架的解析
  • 算法设计与分析 笔记
  • mapreduce的工作原理
  • vue中v-bind和v-model有什么区别
  • 基于SpringBoot和PostGIS的某国基地可视化实战
  • 为什么Linux服务器空间充足而实际上空间已满的原因
  • 【LC刷题】DAY16:530 501 236
  • Vue 3 的 Teleport 组件实现跨层级通信
  • chromadb
  • Gradle 自动化项目构建-Gradle 核心之 Project
  • 简单介绍 Kamailio cfg_rpc 模块
  • Windows 根据github上的环境需求,安装一个虚拟环境,安装cuda和torch
  • LeetCode 179. 最大数
  • 基于Java+SpringBoot+vue+elementui药品商城采购系统详细设计实现
  • Pikachu靶场--文件上传
  • 突破架构瓶颈:克服软件系统中的漂移和侵蚀
  • 每日练题(py,c,cpp).6_19,6_20
  • 居中显示-css样式