#!/usr/bin/env bun /** * Check Dragonfly database usage to understand which services use which databases */ import Redis from 'ioredis'; async function checkDatabaseUsage() { console.log('🔍 Checking Dragonfly database usage...\n'); const redis = new Redis({ host: process.env.DRAGONFLY_HOST || 'localhost', port: parseInt(process.env.DRAGONFLY_PORT || '6379'), password: process.env.DRAGONFLY_PASSWORD || undefined, lazyConnect: true, }); try { await redis.connect(); // Check databases 0-15 for (let db = 0; db < 16; db++) { try { // Select database await redis.select(db); // Get database size const dbSize = await redis.dbsize(); if (dbSize > 0) { console.log(`📊 Database ${db}: ${dbSize} keys`); // Get sample keys const keys = await redis.keys('*'); const sampleKeys = keys.slice(0, 10); for (const key of sampleKeys) { const type = await redis.type(key); const ttl = await redis.ttl(key); console.log(` ├─ ${key} (${type}${ttl > 0 ? `, TTL: ${ttl}s` : ttl === -1 ? ', no TTL' : ''})`); } if (keys.length > 10) { console.log(` └─ ... and ${keys.length - 10} more keys`); } console.log(''); } } catch (error) { // Skip databases that don't exist or are inaccessible } } await redis.disconnect(); } catch (error) { console.error('❌ Error:', error); } } checkDatabaseUsage().catch(console.error);