From 2bbb13e85b5d57b5a17b1c973f7b46963498a767 Mon Sep 17 00:00:00 2001 From: lkddi Date: Fri, 27 Feb 2026 12:42:45 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20=E7=94=A8=E5=8E=9F=E5=A7=8BRedis?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E7=BB=95=E8=BF=87=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=89=8D=E7=BC=80=EF=BC=8C=E8=A7=A3=E5=86=B3hkeys=E5=8F=8C?= =?UTF-8?q?=E9=87=8D=E5=89=8D=E7=BC=80=E6=89=BE=E4=B8=8D=E5=88=B0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/AutoSaveExp.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/Console/Commands/AutoSaveExp.php b/app/Console/Commands/AutoSaveExp.php index dfee481..07fa3f5 100644 --- a/app/Console/Commands/AutoSaveExp.php +++ b/app/Console/Commands/AutoSaveExp.php @@ -96,13 +96,17 @@ class AutoSaveExp extends Command $roomMap = []; $cursor = '0'; + // 获取原始 Redis 客户端(不自动加前缀),用于直接操作完整 key 名 + $rawClient = Redis::connection()->client(); + do { [$cursor, $keys] = Redis::scan($cursor, ['match' => '*room:*:users', 'count' => 100]); foreach ($keys ?? [] as $key) { // 从 key 中提取房间 ID,支持带前缀的格式(如 chatroom-database-room:1:users) if (preg_match('/room:(\d+):users/', $key, $m)) { $roomId = (int) $m[1]; - $usernames = Redis::hkeys($key); + // 直接用原始客户端查找,避免 Laravel 自动加前缀导致 key 被拼接两次 + $usernames = $rawClient->hkeys($key); if (! empty($usernames)) { $roomMap[$roomId] = $usernames; }