php+vue实现简洁的redis可视化web管理器代码

代码语言:php

所属分类:其他

代码描述:php+vue实现简洁的redis可视化web管理器代码,可实现key查找、编辑、删除、新增等操作。

代码标签: php vue 简洁 redis 可视化 web 管理器 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php
// index.php - Redis Web 管理工具 (PHP 8+ 推荐, 兼容 PHP 5.6 / Vue.js 2)
// @version 2.0 - 企业级 UI/UX 优化版

// --- 配置 ---
$redis_host = '127.0.0.1';
$redis_port = 6379;
$redis_password = ''; // 如果没有密码,请留空
// --- 配置结束 ---

try {
    $redis = new Redis();
    if (!$redis->connect($redis_host, $redis_port)) {
        throw new Exception("无法连接到 Redis 服务于 {$redis_host}:{$redis_port}");
    }
    if ($redis_password && !$redis->auth($redis_password)) {
        throw new Exception('Redis 认证失败,请检查密码');
    }
} catch (Exception $e) {
    // 如果是 API 请求,返回 JSON 错误;否则显示 HTML 错误页
    if (!empty($_GET['action']) || !empty($_POST['action'])) {
        header('Content-Type: application/json');
        echo json_encode(['success' => false, 'message' => $e->getMessage()]);
    } else {
        die("<h3>Redis 连接错误</h3><p>{$e->getMessage()}</p>");
    }
    exit;
}

// API 路由处理
if (isset($_GET['action']) || isset($_POST['action'])) {
    header('Content-Type: application/json');
    $action = $_REQUEST['action'] ?? '';

    try {
        switch ($action) {
            // --- 读取操作 (GET) ---
            case 'keys':
                $pattern = isset($_GET['pattern']) && $_GET['pattern'] !== '' ? $_GET['pattern'] : '*';
                $keys = $redis->keys($pattern);
                sort($keys); // 对 key 进行排序
                $data = array_map(function($key) use ($redis) {
                    $type = $redis->type($key);
                    return [
                        'key' => $key,
                        'type' => typeToString($type),
                        'ttl' => $redis->ttl($key),
                        'size' => getValueSize($redis, $key, $type)
                    ];
                }, $keys);
                echo json_encode(['success' => true, 'data' => $data]);
                break;

            case 'get':
                $key = $_GET['key'];
                if (!$redis->exists($key)) throw new Exception("Key '{$key}' 不存在");
                $type = $redis->type($key);
                $value = getRedisValue($redis, $key, $type);
                echo json_encode([
                    'success' => true,
                    'data' => [
                        'key' => $key,
                        'type' => typeToString($type),
                        'value' => $value,
                        'ttl' => $redis->ttl($key)
                    ]
                ]);
                break;

            // --- 写入/删除操作 (POST) ---
            case 'set':
                $key = $_POST['key'] ?? '';
                $value = $_POST['value'] ?? '';
                $type = $_POST['type'] ?? 'string';
                $ttl = (int)($_POST['ttl'] ?? -1);

                if (empty($key)) throw new Exception("Key 不能为空");

                setRedisValue($redis, $key, $value, $type);

                if ($ttl > 0) {
                    $redis->expire($key, $ttl);
                } else {
                    $redis->persist($key);
                }
                echo json_encode(['success' => true, 'message' => "Key '{$key}' 已成功保存"]);
                break;

            case 'delete':
                $key = $_POST['key'];
                if ($redis->del($key)) {
                    echo json_encode(['success' => true, 'message' => "Key '{$key}' 已成功删除"]);
                } else {
                    throw new Exception("删除 Key '{$key}' 失败或 Key 不存在");
                }
                break;
            
            case 'info':
                 echo json_encode(['success' => true, 'data' => $redis->info()]);
                 break;

            default:
                throw new Exception("未知的 API 操作: {$action}");
        }
    } catch (Exception $e) {
        echo json_encode(['success' => false, 'message' => $e->getMessage()]);
    }
    exit;
}

// --- 后端工具函数 ---
function typeToString($typeId) {
    // Redis::TYPE_* 常量映射
    $map = [
        Redis::REDIS_STRING => 'string',
        Redis::REDIS_SET => 'set',
        Redis::REDIS_LIST => 'list',
        Redis::REDIS_ZSET => 'zset',
        Redis::REDIS_HASH => 'hash',
    ];
    return $map[$typeId] ?? 'unknown';
}

function getValueSize($redis, $key, $type) {
    switch ($type) {
        case Redis::REDIS_STRING: return strlen($redis->get($key));
        case Redis::REDIS_HASH: return $redis->hLen($key);
        case Redis::REDIS_LIST: return $redis->lLen($ke.........完整代码请登录后点击上方下载按钮下载查看

网友评论0