stock-bot/check-db-usage.ts
2025-06-21 20:07:43 -04:00

59 lines
No EOL
1.7 KiB
TypeScript

#!/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);