原文网址:Redis--模糊查询--方法/实例_IT利刃出鞘的博客-CSDN博客
说明
本文介绍Redis模糊查询的方法。
官网网址
https://redis.io/commands/keys/
https://redis.io/commands/scan/
Redis模糊查询键的方法
Redis提供了两种模糊查询键的方法:KEYS , SCAN。推荐用SCAN,下边会介绍。
KEYS和SCAN都支持glob通配符中的三个:*,?,[]:
示例
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]>
上边是文章的部分内容,为便于维护,全文已转移到此网址:Redis-模糊查询-实例 - 自学精灵