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