Расширение: Доп информация (сколько памяти потребляется и т.д.)

Сам 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 добавляется детальное описание.