Расширение: Доп информация (сколько памяти потребляется и т.д.)
Сам Redis по неизвестной мне причине не показывает некоторую, на мой взгляд, полезную информацию о себе, например, сколько сейчас памяти потребляется, сколько всего доступно и т. д.
Страница с данными есть, но таких данных там нет, а они иногда могут быть очень полезны. Поэтому я написал небольшое расширение, которое можно добавить в functions.php или как MU-плагин (в этом случае я предпочитаю этот способ):
<?php
/**
* Adds a node to the WordPress admin toolbar displaying Redis cache
* diagnostics—showing memory usage and other info—only.
*
* @version: 1.1.2
*/
/**
* @see \Rhubarb\RedisCache\Plugin::render_admin_bar()
*/
add_action( 'admin_bar_menu', 'redis_cache_more_toolbar_info', 997 );
function redis_cache_more_toolbar_info( \WP_Admin_Bar $toolbar ): void {
if( ! class_exists( \Rhubarb\RedisCache\Plugin::class ) ){
return;
}
if( defined( 'WP_REDIS_DISABLE_ADMINBAR' ) && WP_REDIS_DISABLE_ADMINBAR ){
return;
}
$plugin = \Rhubarb\RedisCache\Plugin::instance();
if( ! $plugin->current_user_can_manage_redis() || ! $plugin->get_redis_status() ){
return;
}
$redis = $GLOBALS['wp_object_cache']->redis_instance();
$fields = [
'redis_mode' => '', // standalone - режим работы Redis (standalone — один сервер).
'config_file' => '', // /etc/redis/redis.conf - путь к конфигу Redis.
'io_threads_active' => '', // 0 - количество активных потоков ввода/вывода (0 значит однопоточный режим).
'connected_clients' => '', // 3 - количество подключенных клиентов.
'maxclients' => '', // 10000 - максимально разрешённое число клиентов.
'maxmemory_human' => '', // 4.00G - максимальное ограничение памяти Redis.
'total_system_memory_human' => '', // 15.25G - общий объём памяти сервера.
'used_memory_human' => '', // 344.48M - текущий расход памяти Redis (основной показатель).
'used_memory_rss_human' => '', // 380.08M - реальный расход памяти Redis в системе.
'used_memory_peak_human' => '', // 565.12M - пиковый расход памяти Redis за всё время работы.
'used_memory_peak_perc' => '', // 60.96% - текущий расход памяти в процентах от пика.
'used_memory_dataset' => '', // 295869416 - размер данных, хранящихся в Redis (без учёта служебной информации).
'used_memory_dataset_perc' => '', // 82.11% - процент полезных данных от всей потребляемой памяти.
];
$info = array_intersect_key( $redis->info(), $fields );
$info = array_merge( $fields, $info ); // sort
$info['used_memory_dataset'] = size_format( $info['used_memory_dataset'] );
$cut_decimal = static fn( $val ) => preg_replace( '~(\d)\.\d+~', '$1', $val );
$text = strtr( '{USED_MEM} / {MAX_MEM} ({PERCENT})',
[
'{USED_MEM}' => $cut_decimal( $info['used_memory_rss_human'] ),
'{MAX_MEM}' => $cut_decimal( $info['maxmemory_human'] ),
'{PERCENT}' => $cut_decimal( $info['used_memory_peak_perc'] ),
]
);
$toolbar->add_node( [
'parent' => 'redis-cache-info',
'id' => 'redis-cache-more-info-details',
'title' => $text,
'href' => network_admin_url( ( fn() => $this->page )->call( $plugin ) . '#diagnostics' ),
'meta' => [
'title' => implode( "\n", array_map( static fn( $k, $v ) => "$k = $v", array_keys( $info ), array_values( $info ) ) ),
],
] );
}
Этот код добавляет дополнительный пунк в тулбар (админ бар) меню плагина Редис, отображая расширенную информацию о Redis-кэше.
Что делает этот код:
- Проверяет, доступен ли класс
\Rhubarb\RedisCache\Pluginи активен ли Redis. - Получает данные о состоянии Redis, включая использование памяти, количество подключенных клиентов и другие параметры.
- Формирует строку с основными показателями (используемая память / максимальная память (процент)).
- Добавляет новый пункт в тулбар администратора. Также в атрибут title добавляется детальное описание.
