In Node.js applications, you may need to fetch all keys from a Redis database. This is often used for debugging purposes or when you need to analyze or manipulate all data.
KEYS *
command:const redis = require('redis');
const client = redis.createClient();
client.keys('*', (err, keys) => {
if (err) return console.log(err);
for(let i = 0; i < keys.length; i++) {
console.log(keys[i]);
}
});
In this example, KEYS *
command is used to fetch all the keys from Redis. The returned keys are then logged to the console.
SCAN
command for large databases:const redis = require('redis');
const client = redis.createClient();
let cursor = '0';
function scan() {
client.scan(cursor, 'MATCH', '*', 'COUNT', '100', function(err, reply) {
if(err) throw err;
cursor = reply[0];
reply[1].forEach(function(key, i) {
console.log(key);
});
if(cursor === '0') {
return console.log('Scan complete');
} else {
return scan();
}
});
}
scan();
For larger databases, it's better to use SCAN
as KEYS *
may end up blocking the server while it fetches all keys. In this example, SCAN
is used in a loop until all keys are fetched and logged.
KEYS *
command in a production environment as it might affect performance. Instead, use SCAN
as it's more efficient and doesn't block the server.KEYS *
on large databases can lead to performance issues. It's best to use SCAN
for such cases.KEYS
and SCAN
commands accept a pattern that can be used to filter keys.Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.