zoukankan      html  css  js  c++  java
  • 使用redis实现搜索历史

    要求:

      1.限制搜索历史的个数

      2.大于三十天清除历史纪录

      3.最多5条历史纪录

    代码:

      第一部分:查询接口

      

        @PostMapping("/getAiResults")
        @SneakyThrows
        public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) throws Exception {
            try {
                String encode = Base64.encode(file.getBytes());
                ImageRequest imageRequest = new ImageRequest();
                imageRequest.setImage(encode);
                String result = EasydlImageClassify.easydlImageClassify(imageRequest);
                AiResponseEntity jsonObject = JSONUtil.toBean(result, AiResponseEntity.class);
    
                HashMap<String, InsectEntity> dataMap = new HashMap<String, InsectEntity>();
    
                List<InsectEntity> results = jsonObject.getResults();
                results.forEach(item -> {
                    InsectEntity ins = dataMap.get(item.getName());
                    if (ins != null) {
                        dataMap.put(item.getName(), item.getScore() > ins.getScore() ? item : ins);
                    } else {
                        dataMap.put(item.getName(), item);
                    }
                });
                Set<String> strings = dataMap.keySet();
                ArrayList<InsectEntity> insectEntities = new ArrayList<>();
                strings.forEach(item -> {
                    insectEntities.add(dataMap.get(item));
                });
                insectEntities.forEach(item -> {
                    SituationArchivesPests one = situationArchivesPestsService.getOne(Wrappers.lambdaQuery(SituationArchivesPests.class)
                            .eq(SituationArchivesPests::getInsectName, item.getName()));
                    item.setPests(one);
                    // ==============================核心代码
                    String key = RedisKeyPrefix.农情快讯搜索.getKey() + SecurityUtils.getLoginUser().getUser().getUserId();
                    redisTemplate.expire(key, 30, TimeUnit.DAYS);
    //                if (one!=null){
                    redisTemplate.opsForList().leftPush(key, JSONUtil.toJsonStr(item));
                    Long size = redisTemplate.opsForList().size(key);
                    if (size > 10) {
                        redisTemplate.opsForList().rightPop(key);
                    }
    //                }
                    //===============================核心代码
    
                });
                return AjaxResult.success(insectEntities);
            } catch (Exception e) {
                return AjaxResult.error(e.getMessage());
            }
        }

        第一部分:获取历史

        @GetMapping(value = "/serarchHistory")
        @ApiOperation("识虫历史记录")
        public AjaxResult serarchHistory() {
            String key = RedisKeyPrefix.识虫历史记录.getKey() + SecurityUtils.getLoginUser().getUser().getUserId();
            Long size = redisTemplate.opsForList().size(key);
            List<String> range = redisTemplate.opsForList().range(key, 0, size - 1);
            return AjaxResult.success(range);
        
  • 相关阅读:
    mariadb配置双主多从
    mq系列rabbitmq-02集群+高可用配置
    mq系列rabbitmq-01简介,安装,api操作
    持续集成框架jenkins介绍02-持久集成git仓库+maven项目
    git仓库相关知识03-搭建远程仓库服务器
    RecyclerView瀑布流优化方案探讨
    Android实际开发bug大总结
    Android打造万能自定义阴影控件
    PagerAdapter深度解析和实践优化
    Java博客大汇总
  • 原文地址:https://www.cnblogs.com/xyzxy/p/15322878.html
Copyright © 2011-2022 走看看