百万级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(查到的数据可能会多,可能会少)

 

 

相关内容

热门资讯

推荐十款!亚盈开挂功能方法,亚... 推荐十款!亚盈开挂功能方法,亚盈真是存在有开挂方法1、完成亚盈辅助器v3.3的残局,帮助玩家取得所有...
科技分享!五龙捕鱼开挂功能神器... 科技分享!五龙捕鱼开挂功能神器,五龙捕鱼本来有开挂神器1、在五龙捕鱼插件功能辅助器技巧中,中转单元十...
玩家必备科普!新九天辅助器功能... 玩家必备科普!新九天辅助器功能方法,新九天其实存在有辅助器方法1、新九天辅助器安装包、新九天辅助器2...
教程攻略!永乐透视功能方法,永... 教程攻略!永乐透视功能方法,永乐竟然有透视方法1、永乐辅助器安装包、永乐辅助器2、分享自己喜欢的永乐...
玩家必备科普!朋友安徽麻将透视... 玩家必备科普!朋友安徽麻将透视挂功能神器,朋友安徽麻将好像有透视挂神器1、每一步都需要思考,不同水平...
最新通报!东游三张牌辅助器功能... 最新通报!东游三张牌辅助器功能方法,东游三张牌本来有辅助器方法1、游戏颠覆性的策略玩法,独创攻略技巧...
玩家必看攻略!捕鱼联盟辅助器功... 玩家必看攻略!捕鱼联盟辅助器功能技巧,捕鱼联盟原来存在有辅助器技巧1、不需要AI权限,帮助你快速的进...
每日必看推荐!酷乐游戏透视挂功... 每日必看推荐!酷乐游戏透视挂功能脚本,酷乐游戏确实是有透视挂脚本1、下载好酷乐游戏透视辅助下载之后点...
科技介绍!游游棋牌开挂功能攻略... 科技介绍!游游棋牌开挂功能攻略,游游棋牌竟然真的是有开挂攻略游游棋牌辅助器是一种具有地方特色的麻将游...
今日头条!天酷大厅开挂功能工具... 今日头条!天酷大厅开挂功能工具,天酷大厅确实是真的有开挂工具天酷大厅能透视中分为三种模型:天酷大厅模...