Redis--模糊查询--方法实例

原文网址:Redis--模糊查询--方法/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍Redis模糊查询的方法。

官网网址

https://redis.io/commands/keys/

https://redis.io/commands/scan/

Redis模糊查询键的方法

Redis提供了两种模糊查询键的方法:KEYS , SCAN。推荐用SCAN,下边会介绍。

模糊查询的通配符

KEYS和SCAN都支持glob通配符中的三个:*,,\[\]:

  • *:通配任意多个字符
  • :通配单个字符
  • \[\]:通配括号内的某一个字符

示例

  • hllo
    • 匹配 hello, hallo and hxllo
  • h*llo
    • 匹配 hllo、heeeello
  • haello
    • 匹配 hello、hallo
    • 不匹配 hillo
  • h\^ello
    • 匹配 hallo、hbllo...
    • 不匹配 hello
  • ha-bllo 匹配 hallo and hbllo

KEYS

说明

KEYS指令会一次性查出所有满足条件的key(没有 offset、limit 参数)。keys 算法是遍历算法,复杂度是 O(n)。

数据量大时会有问题:redis 是单线程的,操作都是原子的,如果实例中有千万级以上的 key,这个指令就会导致 Redis 服务卡顿,所有读写 Redis 的其它的指令都会被延后甚至会超时报错,可能会引起缓存雪崩甚至数据库宕机。

指令格式

KEYS pattern

pattern即key的正则表达式。

示例

先写入一些数据:

复制代码
192.168.xxx.21:6379[2]> set hello 1
OK
192.168.xxx.21:6379[2]> set word 1
OK
192.168.xxx.21:6379[2]> set hellp 1
OK
192.168.xxx.21:6379[2]> set ahellog 1
OK
192.168.xxx.21:6379[2]> set hellog 1
OK

查询:

复制代码
192.168.xxx.21:6379[2]> keys *
1) "hello"
2) "hellog"
3) "hellp"
4) "word"
5) "ahellog"
192.168.xxx.21:6379[2]> keys *hell*
1) "hello"
2) "hellog"
3) "hellp"
4) "ahellog"
192.168.xxx.21:6379[2]> keys hell*
1) "hello"
2) "hellog"
3) "hellp"
//知道前面的一些字母,忘记了最后一个字母
192.168.xxx.21:6379[2]> keys hell?
1) "hello"
2) "hellp"
//知道前面的一些字母,忘记了最后两个个字母
192.168.xxx.21:6379[2]> keys hell??
1) "hellog"
//知道前面四个字母,最后一个字母有可能是p t y 其中的一个
192.168.xxx.21:6379[2]> keys hell[pty]
1) "hellp"
192.168.xxx.21:6379[2]>

SCAN

上边是文章的部分内容,为便于维护,全文已转移到此网址:Redis-模糊查询-实例 - 自学精灵

相关推荐
韦胖漫谈IT12 分钟前
数据库关系型 vs 非关系型:选型从问题出发
数据库
土狗TuGou18 分钟前
SQL内功笔记 · 第9篇:UPDATE FROM 进阶——告别逐行子查询,拥抱集合更新
java·数据库·笔记·sql·mysql
代码中介商19 分钟前
Redis位图实战:海量数据高效处理
数据库·redis·缓存
头歌实践平台25 分钟前
头歌数据库 触发器
数据库
比企谷八幡25 分钟前
数据库 Page 内部是什么样:Page Header、Slot 和 Line Pointer
数据库·c++·postgresql·数据库架构
小二·27 分钟前
Redis 7 实战:缓存/消息队列/分布式锁生产级实现
redis·分布式·缓存
日取其半万世不竭36 分钟前
密码管理工具私有化部署,Vaultwarden 备份恢复怎么做?
数据库·docker·容器
海市公约38 分钟前
Redis 哨兵模式底层原理与自动故障转移全流程
redis·sentinel·redis哨兵·高可用架构·主观下线·客观下线·leader选举
abigale0341 分钟前
LangChain 实践4: 7个人AI助手全栈项目:完整拆解+分阶段开发指南
缓存·langchain·prompt·token·rag·lcel
填满你的记忆41 分钟前
《为什么 MySQL 不适合做 AI 检索?》
数据库·人工智能·mysql·ai·向量数据库