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; }