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操作命令(总)(模糊查询)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/582722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VPN的基本概念

随着互联网的普及和应用的广泛&#xff0c;网络安全和隐私保护越来越受到人们的关注。在这个信息爆炸的时代&#xff0c;我们的个人信息、数据通信可能会受到各种威胁&#xff0c;如何保护自己的隐私和数据安全成为了一个迫切的问题。而VPN&#xff08;Virtual Private Network…

hadoop中块的概念

块概念 目录 1.分块的原因 2.分块的大小 默认为128M 3.机架 4.在块的分布上 5.hadoop上传数据的步骤&#xff08;重要&#xff09; 6.读过程 1.分块的原因 存储的角度 分布式存储 计算角度 生产环境中 4G 2.分块的大小 默认为128M 块的大小不宜过大 也不宜过小 都会使…

配置nodejs的俩小脚本

介绍&#xff1a;共两个脚本。 脚本1&#xff0c;用来配置环境变量&#xff0c;生成环境变量所需的配置信息&#xff0c;然后自己添加到系统环境变量里去 特别注意&#xff1a;该脚本需要放到nodejs目录下面&#xff0c;如果不是&#xff0c;则无法生成环境变量配置文本内容 另…

vue2如何创建一个项目?

目录 1. 安装环境&#xff1a; 2. 安装Vue CLI 3. 创建新项目 4. 选择配置 5. 安装依赖并运行 6. 开始开发 7. 构建项目 8. 预览生产环境构建 首先创建一个vue2项目&#xff0c;你可以通过以下步骤进行&#xff1a; 1. 安装环境&#xff1a; 保证自己的电脑已经安装N…

springboot笔记一:idea社区版本创建springboot项目的方式

社区idea 手动maven 创建springboot项目 创建之后修改pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

学习笔记:能量信号与功率信号(一)

目录 一、能量信号&#xff08;Energy Signal&#xff09; 二、功率信号&#xff08;Power Signal&#xff09; 三、信号关系图 四、总结 能量信号和功率信号是信号分析中两个基本的概念&#xff0c;它们主要用来描述信号在时间域中能量分布的特性&#xff0c;对于理解信号…

Unity+Shader入门精要-1. 入门shader

今天开始正式整合学习的shader内容。 Simple Shader 主要介绍了大概的shader格式。 Shader "Unity Sgaders Book/Chapter 5/Simple Shader" //shader名 {Properties{//声明color类型的属性_Color("Color Tint", Color) (1.0,1.0,1.0,1.0)}SubShader{Pa…

本地生活服务平台哪家强,怎么申请成为服务商?

当下&#xff0c;本地生活服务已经成为了多家互联网大厂布局的重要板块&#xff0c;在巨大的市场需求和强大的资本加持下&#xff0c;不少人都看到了本地生活服务平台广阔的前景和收益空间。在此背景下&#xff0c;许多普通人都跃跃欲试&#xff0c;想要成为本地生活服务商&…

基于RAG的问答机器人

基于RAG的问答机器人 前置条件 什么是RAG https://blog.csdn.net/m0_56699208/article/details/138063866?spm1001.2014.3001.5502 quickstart 构建 概括地说&#xff0c;任何 SQL 链和 agent 的步骤如下&#xff1a; 将问题转换为 SQL 查询&#xff1a;模型将用户输入…

设计模式 策略模式

文章目录 策略模式简介策略模式结构策略模式代码 策略模式简介 策略模式是一种行为型设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端。 策略模式结构 策略(Strategy)接口:定义了一个算法族,并声明了…

FebHost:什么是挪威.no域名,如何注册?

挪威国家域名介绍 挪威是一个位于北欧的国家&#xff0c;北面和西面是大西洋和北海&#xff0c;东面和南面则与瑞典、芬兰接壤。挪威是一个高度发达的经济体&#xff0c;其政府在经济管理和可持续发展方面也取得了很多成就。挪威的人均GDP在世界范围内排名非常靠前&#xff0c…

Android 多媒体处理中ByteBuffer使用注意事项

Android多媒体处理中ByteBuffer使用注意事项 ByteBuffer 是 Java 中用来操作原始字节数据的类&#xff0c;它提供了一种灵活的方式来读取、写入和操作字节数据。以下是关于 ByteBuffer 的详细说明&#xff1a; 创建 ByteBuffer 你可以通过几种方式来创建 ByteBuffer&#xf…

笔试刷题-Day10

牛客 一、DP30买卖股票的最好时机&#xff08;一&#xff09; 算法&#xff1a;虽然题目标了DP但是用贪心更快页更容易理解 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Sca…

2024LarkXR新增功能系列之五 | 单端口支持多并发

实时云渲染技术在为虚拟现实、游戏、和各种应用程序提供强大的渲染支持的同时&#xff0c;也带来了一些网络和运维上的挑战。在传统的设置中&#xff0c;实时云渲染推流技术需要为每个视频流单独占用服务器的一个端口。这种方法在多用户同时访问的情况下可能会导致端口资源的快…

QT学习篇—qt软件安装

qt下载网址http://download.qt.io/new_archive/qt/ QT官网Qt | Tools for Each Stage of Software Development LifecycleAll the essential Qt tools for all stages of Software Development Lifecycle: planning, design, development, testing, and deployment.https:…

APP测试面试题汇总

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、基础篇 1、请介绍一下&#xff0c;APP测试流程&#xff1f…

嵌入式学习59-ARM7(自动设备号和混杂设备)

知识零碎&#xff1a; 头文件查找&#xff1a; /arm/路径下的头文件 linux驱动程序的编写&#xff0c;编译&#xff0c;运行过程 -------------------------------------------------------------------------------------------------------------------------------- 1.…

30秒出服装设计稿,森马用Serverless+AIGC 整“新活”!

“创新项目如何去赋能我们的业务&#xff0c;这件事情在森马很重要。阿里云函数计算帮我们屏蔽掉了想把AI落地到实际业务场景中 GPU 算力资源储备、采购成本、技术门槛等很多难题&#xff0c;从而迅速做出决策&#xff0c;快人一步站在正确的起点&#xff0c;体验新技术对整个服…

用友裁应届

下半年准备来用友的24应届生们&#xff0c;请三思&#xff01;&#xff01;&#xff01; 我是23届某9研究生&#xff0c;2月份用友以绩效低为由被裁&#xff08;我一个应届生跟老员工比绩效&#xff0c;搞笑呢&#xff09;。 半年被裁&#xff0c;找工作太难了&a…

LangChain之各个输出解析器的使用

Model I/O 在LangChain中&#xff0c;Model I/O被称为&#xff1a;模型的输入与输出&#xff0c;其有输入提示(Format)、调用模型(Predict)、输出解析(Parse)等三部分组成。 makefile 复制代码 1.提示模板: LangChain的模板允许动态选择输入&#xff0c;根据实际需求调整输入内…