ThreadUtil.execute(() -> { try { Set<String> keys = new HashSet<>(); this.globalRedisTemplate.execute((RedisConnection connection) -> { Cursor<byte[]> cursor = connection.scan(ScanOptions.scanOptions().count(Integer.MAX_VALUE).match("*DeviceImport*").build()); cursor.forEachRemaining(item -> { //符合條件的key String keyDel = new String(item, StandardCharsets.UTF_8); keys.add(keyDel); if(CollUtil.isNotEmpty(keys) && keys.size() > 1000){ log.debug("清除設備入庫臨時媒體ID緩存 查詢key達到1000,執行刪除..."); globalRedisTemplate.delete(keys); keys.clear(); log.debug("清除設備入庫臨時媒體ID緩存 刪除成功..."); } }); if(CollUtil.isNotEmpty(keys)){ log.debug("清除設備入庫臨時媒體ID緩存 查詢到最後一批key:{},執行刪除...",keys.size()); globalRedisTemplate.delete(keys); keys.clear(); log.debug("清除設備入庫臨時媒體ID緩存 刪除最後一批成功..."); } log.debug("清除設備入庫臨時媒體ID緩存 finish..."); return null; }); } catch (Exception e) { log.error("清除設備入庫臨時媒體ID緩存異常:", e); } });
redis 根據前綴掃描刪除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.