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

Laravel Redis如何获取所有前缀匹配的HMSET哈希数据

HMSET示例截图

问题根因

HGETALL 是针对单个确定Hash键的读取命令,不支持通配符匹配。你传入hmset_demo:user_id:*时,Redis会把这串字符当成完整的键名去查找——你根本没有存储过这个名称的键,自然返回空数组。
你之前传入确定ID的完整键名能正常拿到数据,恰恰是因为符合HGETALL的参数要求。

正确实现方案

要拿到所有该前缀下的Hash数据,必须分两步操作:

  1. 扫描出所有匹配hmset_demo:user_id:*规则的真实键名
  2. 遍历所有匹配到的键,逐个调用HGETALL读取内容,最后组装成你需要的列表结构

注意:生产环境禁止直接用KEYS命令扫键,这个命令会全量遍历Redis所有键,数据量大时会阻塞整个服务,优先用游标式的SCAN命令分批扫描。

对应代码示例(适配PHP Redis封装)
$userList = [];
$iterator = null;

// 每次扫100个匹配前缀的键,不会阻塞服务
while ($keys = Redis::scan($iterator, 'hmset_demo:user_id:*', 100)) {
    foreach ($keys as $key) {
        $hashData = Redis::hgetall($key);
        if ($hashData) {
            $userList[] = $hashData;
        }
    }
}

// $userList 就是你期望得到的数组结构

内容的提问来源于stack exchange,提问作者Jaden Leong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:51:19