You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP Redis中使用正则匹配Redis键?代码无结果问题解决

解决PHP Redis中匹配指定前缀键的问题

你遇到的问题根源在于:PHP Redis扩展的keys()方法并不支持正则表达式,它遵循的是Redis原生的glob匹配规则,而Redis Desktop Manager里的搜索可能默认使用了正则语法,所以才会出现两边表现不一致的情况。

正确的写法

要匹配所有以25-开头的键,直接用glob模式的25-*即可:

$tokens = $rdb->keys("25-*");
print_r($tokens);

为什么之前的写法无效?

你写的^25-*在正则表达式里是“匹配以25开头的字符串”,但在Redis的glob模式中:

  • ^只是一个普通字符,不是行首匹配符
  • *代表匹配任意长度的任意字符

所以Redis会去寻找字面量以^25开头的键,自然找不到你实际存在的25-xxxxxx格式的键。

生产环境的最佳实践

另外要提醒你:keys()命令会遍历整个Redis数据库,当数据量较大时会阻塞服务器,影响性能。如果是在生产环境中,更推荐使用scan()命令分批获取匹配的键,示例代码如下:

$iterator = null;
$matchedKeys = [];

// 循环扫描直到遍历完所有键
while ($keys = $rdb->scan($iterator, "25-*")) {
    $matchedKeys = array_merge($matchedKeys, $keys);
}

print_r($matchedKeys);

内容的提问来源于stack exchange,提问作者Rishav Medhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:35:50