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

07-02 1435阅读

文章目录

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

    1、什么是缓存

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

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

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

    2、添加商户缓存

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

    3、前端接口

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

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

    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;
    /**
     * 

    * 前端控制器 *

    */ @RestController @RequestMapping("/shop") public class ShopController { @Resource public 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 */ @PostMapping public Result saveShop(@RequestBody Shop shop) { // 写入数据库 shopService.save(shop); // 返回店铺id return Result.ok(shop.getId()); } /** * 更新商铺信息 * @param shop 商铺数据 * @return 无 */ @PutMapping public 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 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 page = shopService.query() .like(StrUtil.isNotBlank(name), "name", name) .page(new Page(current, SystemConstants.MAX_PAGE_SIZE)); // 返回数据 return Result.ok(page.getRecords()); } }

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

    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;
    /**
     * 

    * 服务实现类 *

    */ @Service public class ShopServiceImpl extends ServiceImpl implements IShopService { @Resource private StringRedisTemplate stringRedisTemplate; @Override public 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、存在,写入redis stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop)); //7、返回 return Result.ok(shop); } }

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

    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:";
    }
    

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

    7、查看Redis Desktop Manager

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

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]