Kaynağa Gözat

fix 用户端首页缓存优化

zoujiajian 3 yıl önce
ebeveyn
işleme
e443a94e02

+ 6 - 1
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -581,6 +581,10 @@ public class RedisService {
         return false;
     }
 
+    public Set<String> keys(String name) {
+        return redisTemplate.keys(name);
+    }
+
     @AllArgsConstructor
     @Getter
     public enum key {
@@ -602,8 +606,9 @@ public class RedisService {
         CMS_USER_PERMISSION_KEY("cms:user:permission:%s:", "user权限缓存前缀", 60 * 60 * 24L * 7),
         REPEAT_USER_KEY("repeat_user_key:%s:", "重复用户插入key", 60l),
         BUSINESS_FIRST_ORDER_USER_KEY("business_first_order_user_key:%s:", "商务分销首单提成key", 60l),
-        PC_WEB_CACHE("pc_web_cache", "官网首页平台缓存", 10 * 60),
+        PC_WEB_CACHE("pc_web_cache", "首页平台缓存", 10 * 60),
         H5_WEB_CACHE("h5_web_cache", "h5首页平台缓存", 10 * 60),
+        YH_HOME_PAGHE_CACHE("yh_home_paghe_cache:", "银河首页缓存", 10 * 60),
         CPS_BACK_LOGIN_KEY("cps_back_login:", "cps商务后台登录key", 3 * 60),
         CPS_AUTH_SUCCESS_KEY("cps_auth_success_key:%s", "cps后台微信授权", 60 * 10),
         QUESTION_RESPONSE_KEY("question_response_key:%s", "问卷回答key", 60 * 60 * 24L),

+ 14 - 6
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -153,7 +153,12 @@ public class GoodsDonController {
      */
     @GetMapping("/get/list")
     public Result<List<GoodsFrontListView>> getGoodsList() {
-        Object value = redisService.get(RedisService.key.PC_WEB_CACHE.getName());
+        List<Long> filter_goodsIds = getFilterGoodsIds();
+        String pcCacheKey = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "PC";
+        if (CollUtil.isNotEmpty(filter_goodsIds)) {
+            pcCacheKey += ":hz-ip";
+        }
+        Object value = redisService.get(pcCacheKey);
         if (value != null) {
             try {
                 List<GoodsFrontListView> list = Jsons.parseObject(value, List.class);
@@ -163,7 +168,6 @@ public class GoodsDonController {
             } catch (Exception e) {
             }
         }
-        List<Long> filter_goodsIds = getFilterGoodsIds();
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
         if (CollUtil.isNotEmpty(filter_goodsIds)) {
             builder.field(GoodsFrontListView::getId, filter_goodsIds).op(Operator.NotIn);
@@ -225,7 +229,7 @@ public class GoodsDonController {
             notifyMsg.append("前有人购买");
             data.setNotifyMsg(notifyMsg.toString());
         });
-        redisService.setNx(RedisService.key.PC_WEB_CACHE.getName(), list, RedisService.key.PC_WEB_CACHE.getTimeout());
+        redisService.setNx(pcCacheKey, list, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout());
         return GatewayResponse.SUCCESS.newBuilder().toResult(list);
     }
 
@@ -234,7 +238,12 @@ public class GoodsDonController {
      */
     @GetMapping("/get/homePage")
     public Result<List<GoodsHomePageView>> getGoodsHomePage() {
-        Object value = redisService.get(RedisService.key.H5_WEB_CACHE.getName());
+        List<Long> filter_goodsIds = getFilterGoodsIds();
+        String h5CacheKey = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "H5";
+        if (CollUtil.isNotEmpty(filter_goodsIds)) {
+            h5CacheKey += ":hz-ip";
+        }
+        Object value = redisService.get(h5CacheKey);
         if (value != null) {
             try {
                 List<GoodsHomePageView> list = Jsons.parseObject(value, List.class);
@@ -244,7 +253,6 @@ public class GoodsDonController {
             } catch (Exception e) {
             }
         }
-        List<Long> filter_goodsIds = getFilterGoodsIds();
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
         if (CollUtil.isNotEmpty(filter_goodsIds)) {
             builder.field(GoodsFrontListView::getId, filter_goodsIds).op(Operator.NotIn);
@@ -260,7 +268,7 @@ public class GoodsDonController {
                 data.setMonths(skuView.getMonths());
             }
         });
-        redisService.setNx(RedisService.key.H5_WEB_CACHE.getName(), dataList, RedisService.key.H5_WEB_CACHE.getTimeout());
+        redisService.setNx(h5CacheKey, dataList, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout());
         return GatewayResponse.SUCCESS.newBuilder().toResult(dataList);
     }
 

+ 9 - 8
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonController.java

@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author chan
@@ -83,8 +84,8 @@ public class CmsGoodsDonController {
         BeanUtil.copyProperties(spu, goods);
 
         goodsDonService.save(goods);
-        redisService.del(RedisService.key.PC_WEB_CACHE.getName());
-        redisService.del(RedisService.key.H5_WEB_CACHE.getName());
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult(goods.getId());
     }
 
@@ -98,8 +99,8 @@ public class CmsGoodsDonController {
         GoodsDon goods = new GoodsDon();
         BeanUtil.copyProperties(spu,goods);
         goodsDonService.updateById(goods);
-        redisService.del(RedisService.key.PC_WEB_CACHE.getName());
-        redisService.del(RedisService.key.H5_WEB_CACHE.getName());
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 
@@ -114,8 +115,8 @@ public class CmsGoodsDonController {
         }
         goods.setStatus(!goods.getStatus());
         goodsDonService.updateById(goods);
-        redisService.del(RedisService.key.PC_WEB_CACHE.getName());
-        redisService.del(RedisService.key.H5_WEB_CACHE.getName());
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult(goods.getStatus());
     }
 
@@ -129,8 +130,8 @@ public class CmsGoodsDonController {
         }
         goods.setDeleted(false);
         goodsDonService.updateById(goods);
-        redisService.del(RedisService.key.PC_WEB_CACHE.getName());
-        redisService.del(RedisService.key.H5_WEB_CACHE.getName());
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult(id);
     }
 

+ 6 - 6
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonSkuController.java

@@ -222,8 +222,8 @@ public class CmsGoodsDonSkuController {
         }
         //给平台更新额外属性
         goodsDonService.updateGoodsSkuPrice(goods.getId(), goods);
-        redisService.del(RedisService.key.PC_WEB_CACHE.getName());
-        redisService.del(RedisService.key.H5_WEB_CACHE.getName());
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
+        redisService.del(keys.toArray(String[]::new));
        return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 
@@ -237,8 +237,8 @@ public class CmsGoodsDonSkuController {
         goodsDonSkuService.saveOrUpdate(sku);
         //给平台更新额外属性
         goodsDonService.updateGoodsSkuPrice(sku.getGoodsId(), null);
-        redisService.del(RedisService.key.PC_WEB_CACHE.getName());
-        redisService.del(RedisService.key.H5_WEB_CACHE.getName());
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 
@@ -254,8 +254,8 @@ public class CmsGoodsDonSkuController {
         //给平台更新额外属性
         GoodsDonSku sku = goodsDonSkuService.getById(skuId);
         goodsDonService.updateGoodsSkuPrice(sku.getGoodsId(), null);
-        redisService.del(RedisService.key.PC_WEB_CACHE.getName());
-        redisService.del(RedisService.key.H5_WEB_CACHE.getName());
+        Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
+        redisService.del(keys.toArray(String[]::new));
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }