使用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);
    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM