switch ($groupBy) { case 'is_new_visitor': if (preg_match("/\"{$key}\";b:([01])/", $data, $matches)) { return $matches[1]; } break; default: // remote_addr, http_secure, http_host, http_user_agent, request_uri, is_new_visitor if (preg_match("/\"{$key}\";s:\\d+:\"([^\"]+)\"/", $data, $matches)) { return $matches[1]; } break; } return 'N/A'; }; $client = $redisSession->_redisClient(TRUE)->connect(); $groupedData = array(); $cursor = 0; while (1) { try { $result = $client->__call('scan', array($cursor, 'MATCH', $sessionPattern, 'COUNT', 10000)); list($cursor, $keys) = $result; } catch (CredisException $e) { if ($e->getMessage() != "unknown command 'scan'") { throw $e; } $keys = $client->keys($sessionPattern); $cursor = 0; } foreach ($keys as $sessionId) { $sessionData = $redisSession->_inspectSession($sessionId);