Browse Source

关键词版本v1.0功能开发
去除redis序列化和反序列化

JiangChongBo 2 years ago
parent
commit
ffc27c4743

+ 33 - 0
src/main/java/com/caimei365/commodity/components/RedisConfig.java

@@ -0,0 +1,33 @@
+package com.caimei365.commodity.components;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializer;
+
+/**
+ * 去除序列化和反序列化
+ */
+@Configuration
+public class RedisConfig {
+
+    @Bean
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
+        // 准备RedisTemplate对象
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+        // 设置连接工厂
+        redisTemplate.setConnectionFactory(connectionFactory);
+        // 创建JSON序列化工具
+        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
+        // 设置key的序列化
+        redisTemplate.setKeySerializer(RedisSerializer.string());
+        redisTemplate.setHashKeySerializer(RedisSerializer.string());
+        // 设置value的序列化
+        redisTemplate.setValueSerializer(jsonRedisSerializer);
+        redisTemplate.setHashValueSerializer(jsonRedisSerializer);
+        // 返回
+        return redisTemplate;
+    }
+}

+ 6 - 1
src/main/java/com/caimei365/commodity/controller/SearchProductApi.java

@@ -239,10 +239,15 @@ public class SearchProductApi {
      * @return
      */
     @PostMapping("/get/keyword/list")
-    public ResponseJson<List<SearchKeywordyVo>> getKeywordList(SearchFrequencyVo searchKeywordyVo){
+    public ResponseJson<List<SearchKeywordyVo>> getKeywordList(@RequestBody SearchFrequencyVo searchKeywordyVo){
         if(StringUtils.isEmpty(searchKeywordyVo.getKeyword())){
             return ResponseJson.error("请输入关键词");
         }
         return ResponseJson.success(searchProductService.getKeywordList(searchKeywordyVo.getKeyword()));
     }
+    @GetMapping("/conKeyWord")
+    public void conKeyWord(){
+        searchProductService.conKeyWord();
+    }
+
 }

+ 2 - 0
src/main/java/com/caimei365/commodity/mapper/SearchFrequencyMapper.java

@@ -20,4 +20,6 @@ public interface SearchFrequencyMapper {
 
         List<SearchKeywordyVo> getKeywordList(@Param("keyword")String keyword);
 
+        List<SearchKeywordyVo> getvalueList(@Param("keyword") String keyword);
+
 }

+ 2 - 0
src/main/java/com/caimei365/commodity/service/SearchProductService.java

@@ -108,4 +108,6 @@ public interface SearchProductService {
      */
       List<SearchKeywordyVo> getKeywordList(String keyword);
 
+       void conKeyWord();
+
 }

+ 24 - 1
src/main/java/com/caimei365/commodity/service/impl/SearchProductServiceImpl.java

@@ -664,5 +664,28 @@ public class SearchProductServiceImpl implements SearchProductService {
         }
         return searchFrequencyVos;
     }
-
+    /**
+     * redis缓存关键词(把所有的关键词整合到一个字符串中)
+     * 用时从redis取出转成list集合返回给前端进行联动
+     */
+    public void conKeyWord(){
+        List<SearchKeywordyVo> keywordList = searchFrequencyMapper.getKeywordList(null);
+        for (SearchKeywordyVo searchFrequency:keywordList) {
+            String str=searchFrequency.getKeyword();
+            String key="";
+            for(int i=0;i<str.length();i++){
+                key+=str.charAt(i);
+                List<SearchKeywordyVo> searchFrequencyVos = searchFrequencyMapper.getvalueList(key);
+                String keyword = com.alibaba.fastjson.JSONObject.toJSONString(searchFrequencyVos);//有值的字段才转
+                redisService.set(key,keyword,60L * 60 * 24 * 30);
+            }
+        }
+        System.out.println(redisService.getExpireTime("恩"));
+        System.out.println(redisService.get("恩"));
+        System.out.println(redisService.getExpireTime("光"));
+        System.out.println(redisService.get("光"));
+//        System.out.println(redisService.getExpireTime("keyword"));
+//        String key=redisService.get("keyword").toString();
+//        System.out.println(key);
+    }
 }

+ 12 - 0
src/main/resources/mapper/SearchFrequencyMapper.xml

@@ -43,4 +43,16 @@
             and keyword like concat('%', #{keyword},'%')
         </if>
     </select>
+
+    <select id="getvalueList" resultType="com.caimei365.commodity.model.vo.SearchKeywordyVo">
+        select
+        keyword
+        from cm_user_search_frequency
+        where trueStatus=1
+        and   delStatus=1
+        and keyword is not null
+        <if test="keyword != null and keyword != ''">
+            and keyword like concat(#{keyword},'%')
+        </if>
+    </select>
 </mapper>