redis模糊查询redis中的key

redis模糊查询redis中的key

方式一:使用keys命令

/**
 * 查找匹配的key
 *
 * @param pattern
 * @return
 */
public Set<String> keys(String pattern) {
   return redisTemplate.keys(pattern);
}

方式二:使用san命令

/**
 * 查找匹配的key
 *
 * @param pattern
 * @return
 */
public List<String> scanKeysByPattern(String pattern) {
    ScanOptions options = ScanOptions.scanOptions().match(pattern).build();
    Cursor<String> cursor = redisTemplate.scan(options);
    List<String> matchedKeys = new ArrayList<>();
    while (cursor.hasNext()) {
        String key = cursor.next();
        matchedKeys.add(key);
    }
    return matchedKeys;
}

在redis里,允许模糊查询key
有3个通配符 *, ? ,[]
*: 通配任意多个字符
?: 通配单个字符
[]: 通配括号内的某1个字符

测试效率

@GetMapping("/matchKeys")
public Object matchKeys(@RequestParam String keyPrefix) {
    StopWatch stopWatch = new StopWatch();
    String keyPattern = keyPrefix + "*";
    stopWatch.start("--keys--");
    Set<String> keys = redisUtil.keys(keyPattern);
    stopWatch.stop();
    System.out.println("----keys------keys.size=" + keys.size() + "----耗时= " + stopWatch.getLastTaskTimeMillis());

    stopWatch.start("--scan--");
    List<String> keys1 = redisUtil.scanKeysByPattern(keyPattern);
    stopWatch.stop();
    System.out.println("----scan----keys.size=" + keys1.size() + "----耗时= " + stopWatch.getLastTaskTimeMillis());

    System.out.println("stopWatch.prettyPrint() = " + stopWatch.prettyPrint());

    Map<String, Object> resMap = new HashMap<>();
    resMap.put("size", keys.size());
    resMap.put("taskTime", stopWatch.getLastTaskTimeMillis());
    return resMap;
}

虽然KEYS命令可以用来实现模糊查询Key的功能,但需要注意以下几点:

KEYS命令将在整个Redis数据库中执行查询操作,如果数据库中的Key数量庞大,查询的性能可能会受到影响。
在生产环境中,如果需要频繁进行模糊查询,建议使用Redis的有序集合(Sorted Set)来维护索引,以提高查询效率。

参考

redis怎么模糊查询key
redis通用key操作命令(总)(模糊查询)

相关推荐

  1. redis模糊查询rediskey

    2024-04-26 06:10:03       13 阅读
  2. Redis如何查看KEY数据类型

    2024-04-26 06:10:03       15 阅读
  3. rediskey问题

    2024-04-26 06:10:03       14 阅读
  4. redis根据key模糊删除

    2024-04-26 06:10:03       16 阅读
  5. <span style='color:red;'>redis</span>-<span style='color:red;'>Key</span>

    redis-Key

    2024-04-26 06:10:03      28 阅读
  6. python scan方式查询redis所有数据是否含有重复key

    2024-04-26 06:10:03       33 阅读
  7. RedisKEY/慢查询问题排查和解决

    2024-04-26 06:10:03       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 06:10:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 06:10:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 06:10:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 06:10:03       20 阅读

热门阅读

  1. 深入理解Spring Boot钩子函数

    2024-04-26 06:10:03       12 阅读
  2. c# 实现gif转化,视频合成,提取视频帧等

    2024-04-26 06:10:03       16 阅读
  3. python之面向对象

    2024-04-26 06:10:03       14 阅读
  4. 创建一个尽可能小的DOCKER镜像

    2024-04-26 06:10:03       12 阅读
  5. vscode中对 python 快速增加header 描述

    2024-04-26 06:10:03       14 阅读
  6. 自动驾驶的关键在于安全、智能与舒适

    2024-04-26 06:10:03       12 阅读
  7. LLaMA Factory多卡微调的实战教程

    2024-04-26 06:10:03       13 阅读
  8. 从流形的观点分析神经网络

    2024-04-26 06:10:03       16 阅读
  9. NumPy 1.26 中文官方指南(三)

    2024-04-26 06:10:03       13 阅读
  10. 无人机在水利行业的应用

    2024-04-26 06:10:03       15 阅读