get('default'); } return self::$redis; } /** * 获取 Redis 运行信息 */ public static function getInfo(): array { $redis = self::getRedis(); $info = $redis->info(); // 返回数组形式 // 解析需要的字段 $used_memory = isset($info['used_memory']) ? self::formatBytes($info['used_memory']) : '0 B'; $used_cpu = isset($info['used_cpu_sys']) && isset($info['used_cpu_user']) ? round($info['used_cpu_sys'] + $info['used_cpu_user'], 2) : 0; return [ 'version' => $info['redis_version'] ?? 'unknown', 'mode' => $info['redis_mode'] ?? 'unknown', 'port' => $info['tcp_port'] ?? 0, 'clients' => $info['connected_clients'] ?? 0, 'uptime_days' => $info['uptime_in_days'] ?? 0, 'used_memory' => $used_memory, 'used_cpu' => $used_cpu . " 秒", 'maxmemory' => isset($info['maxmemory']) ? self::formatBytes($info['maxmemory']) : 'unlimited', 'aof_enabled' => isset($info['aof_enabled']) && $info['aof_enabled'] == 1, 'rdb_last_bgsave_status' => $info['rdb_last_bgsave_status'] ?? 'unknown', 'keys' => $info['db0'] ?? '0', 'net_input_bytes' => isset($info['total_net_input_bytes']) ? self::formatBytes($info['total_net_input_bytes']) : '0 B', 'net_output_bytes' => isset($info['total_net_output_bytes']) ? self::formatBytes($info['total_net_output_bytes']) : '0 B', ]; } /** * 格式化字节为易读形式 */ protected static function formatBytes(int $bytes): string { if ($bytes <= 0) { return '0 B'; } $units = ['B', 'KB', 'MB', 'GB', 'TB']; $i = (int) floor(log($bytes, 1024)); return sprintf('%.2f %s', $bytes / pow(1024, $i), $units[$i]); } }