laravel-admin-ext/redis-manager
A Laravel-admin extension that adds a Redis management panel to your admin dashboard. Browse keys, inspect values and types, edit or delete entries, and monitor cache contents through a clean web UI—no redis-cli required.
encore/laravel-admin 1.x and Laravel 5.5–7.x. Last tagged release is 2019-12-11 and the repo has no dependents, so treat it as a frozen artifact: verify PHP version compatibility before adding it to a working project.composer require laravel-admin-ext/redis-manager
php artisan admin:import redis-manager
config/admin.php under the extensions key — it ships disabled by default ('enable' => false). Gate it on an env var so production stays closed unless you explicitly open it:
'extensions' => [
'redis-manager' => [
'enable' => env('ADMIN_REDIS_MANAGER', false),
],
],
vendor/laravel-admin-ext/redis-manager/src is small; the service provider, the controller, and the config keys it actually reads are the fastest source of truth. Config key names and the multi-server shape differed between the 2018 and 2019 tags, so don't trust blog posts.routes.php (to see the URI it registers, typically under /admin/redis-manager), the RedisManagerServiceProvider (menu + permissions registration), and the blade views (to see which Redis client API is used — phpredis vs predis).laravel_cache:* for cache, laravel_database_queues:* for queues, or *session*. Inspect one key's TTL and value, then go to the server Info tab and check used_memory_human and evicted_keys. That 60-second loop is the whole value proposition of the package.INFO-family commands. Reach for the value editor only on small, human-readable keys (feature flags, config blobs, counters).redis connection from config/database.php, keep host/port/password/database aligned with REDIS_HOST / REDIS_PORT / REDIS_PASSWORD / REDIS_DB env vars. A panel that shows DB 0 while the app writes to DB 1 will cost you an hour of confusion.admin:import registers the menu and permission entries; assign the Redis menu only to a ops or dev role. If you need finer control, add middleware to the extension route in app/Admin/routes.php (or override the route entirely with your own controller pointing at the package views).+@read +info +scan +slowlog and no +@write +@dangerous. This is the cheapest way to neutralize the FLUSHDB / DEL buttons, and it survives anyone forgetting the permission config.INFO memory, INFO stats, SLOWLOG GET 10, CLIENT LIST, DBSIZE, SCAN 0 MATCH prefix:* COUNT 100. Keep a small runbook of these in your team wiki rather than clicking through tabs.COUNT, not *. Confirm you're on SCAN rather than KEYS by watching Redis INFO commandstats while you type — if cmdstat_keys climbs, stop searching broadly.queues:* payloads and their TTLs. Together they resolve stuck-job incidents much faster than either alone.KEYS on a large dataset will stall your app. Some versions of the key browser fall back to KEYS pattern for searches. On any Redis holding more than a few hundred thousand keys, use a prefix that the index can narrow, or drop into the console and run SCAN manually. Never demo a * search against production.cache.serializer is set), so the value pane shows binary noise. That's expected — use php artisan tinker + Cache::get() when you actually need to read the decoded payload, or check the laravel_cache: prefix and strip it mentally.FLUSHDB and key deletion have no confirmation worth relying on. Either restrict with ACLs (above) or only enable the extension on a staging host.str_* helper removals, and newer Laravel container signatures are plausible failure points. If the panel 500s, check storage/logs/laravel.log first; keep APP_DEBUG=true only in local/staging while diagnosing.admin:import can duplicate menu entries if run twice. Clean up admin_menu rows rather than re-importing.public/vendor/laravel-admin-ext/redis-manager and confirm config/admin.php's asset path isn't rewritten by your deploy.redis-cli --cluster instead.app/Admin/routes.php to your own controller, (b) publish/copy the package's views and edit them in place, (c) replace the config source by binding your own array. There's no plugin architecture — don't plan around one.How can I help you explore Laravel packages today?