<?php
declare(strict_types=1);
namespace App\System\Service;
use Hyperf\Redis\Redis;
class CacheMonitorService
{
public function getCacheServerInfo(): array
{
$redis = container()->get(Redis::class);
$info = $redis->info();
$keys = $redis->keys(config('cache.default.prefix').'*');
return [
'keys' => &$keys,
'server' => [
'version' => &$info['redis_version'],
'redis_mode' => ($info['redis_mode'] === 'standalone') ? '单机' : '集群',
'run_days' => &$info['uptime_in_days'],
'aof_enabled' => ($info['aof_enabled'] == 0) ? '关闭' : '开启',
'use_memory' => &$info['used_memory_human'],
'port' => &$info['tcp_port'],
'clients' => &$info['connected_clients'],
'expired_keys' => &$info['expired_keys'],
'sys_total_keys' => count($keys)
]
];
}
public function view(string $key): string
{
return container()->get(Redis::class)->get($key);
}
public function delete(string $key): bool
{
return container()->get(Redis::class)->del($key) > 0;
}
public function clear(): bool
{
return container()->get(Redis::class)->flushDB();
}
}