百万级redis key如何模糊查找-scan、scan和keys的区别
创始人
2025-01-15 18:37:12
0


1、KEY*

模糊查询导致交互速度慢、阻塞其他 Redis 操作,在Redis中,使用通配符 KEYS 命令进行键的模糊匹配(比如 KEYS key*)可能会导致性能问题,尤其是在数据集较大时。这是因为 KEYS 命令的实现需要遍历所有的键来匹配模式。

在大规模的生产环境中,遍历所有键可能会导致阻塞其他 Redis 操作,因为 KEYS 命令会持有数据库的写锁。此外,这也可能对性能产生负面影响,因为它需要消耗大量的计算资源。在 Redis 中,所有命令都是按顺序执行的,一个命令执行完成后,才会执行下一个命令。这个单线程模型是 Redis 的设计选择之一,有助于简化并发控制,提高数据一致性。
 

2、scan 迭代模糊查询

在使用redis的时候,我们经常涉及到这样的需求:模糊搜索key,即找出满足特定匹配模式的所有key。但是,如果使用像keys和hkyes这样的方法的话,当key的数量特别多时,效率会很慢,而且对线上的redis查询影响较大,非常不推荐这样的做法。
!!!因为redis是单线程的,所以keys会阻塞其他的操作!!!
比较好的方法是scan这样的方法:
scan:对所有数据类型的key生效;
sscan:针对Set数据类型的key;
hscan:针对Hash的key;
zscan:针对有序Set的key。
scan可以当成一种带有cursor(游标、下标)的迭代器,即每次scan之后,都会返回一个cursor,下次的scan基于上次扫描结束的位置继续扫描。

scan的缺点:

  1. 如果在我们使用scan遍历的过程中,redis新增key的话,可能会出现未捕捉到的情况;
  2. scan有一定的概率会重复返回相同的key,这需要我们在客户端进行去重。

带匹配模式和count的scan

通过设置MATCH,来设计特定的匹配模式,基于glob-style pattern
通过设置COUNT,规定每次scan的数量,默认为10(查到的数据可能会多,可能会少)

 

 

相关内容

热门资讯

此事引发网友热议!闲逸亲友圈a... 此事引发网友热议!闲逸亲友圈app辅助(辅助)原来真的有辅助下载(有挂方法)-哔哩哔哩1、操作简单,...
普及透视!fishpoker透... 普及透视!fishpoker透视底牌!切实真的是有辅助攻略(真的有挂)-哔哩哔哩1、很好的工具软件,...
科普分享!GG大玩家辅助软件,... 科普分享!GG大玩家辅助软件,aapoker真的假的,手段教程(有挂详情)-哔哩哔哩1、每一步都需要...
详情透视!拱趴大菠萝开挂方法,... 详情透视!拱趴大菠萝开挂方法,aapoker透视脚本入口,方案教程(有挂讲解)-哔哩哔哩拱趴大菠萝开...
随着!衢州都莱辅助器开挂(辅助... 随着!衢州都莱辅助器开挂(辅助)总是是有辅助app(有挂细节)-哔哩哔哩1、衢州都莱辅助器开挂免费辅...
终于知道!!小程序卡五星辅助,... 终于知道!!小程序卡五星辅助,hhpoker作必弊码怎么用,法子教程(有挂规律)-哔哩哔哩1、很好的...
解迷透视!德州机器人代打脚本!... 解迷透视!德州机器人代打脚本!本来一直总是有辅助软件(果真有挂)-哔哩哔哩1)德州机器人代打脚本辅助...
推荐透视!wepoker软件靠... 推荐透视!wepoker软件靠谱么,购买wepoker模拟器,诀窍教程(的确有挂)-哔哩哔哩1.we...
据相关数据显示!微信小程序财神... 据相关数据显示!微信小程序财神十三张脚本(辅助)竟然存在有辅助软件(今日头条)-哔哩哔哩1、完成微信...
重大来袭!来玩app辅助器,h... 重大来袭!来玩app辅助器,hhpoker可以开挂吗,策略教程(有挂解密)-哔哩哔哩1、不需要AI权...