node-redisscan
node-redisscan copied to clipboard
Recursively scan through Redis keys.
RedisScan
Recursively scans the keyspace of a Redis 2.8+ instance using SCAN, HSCAN, ZSCAN, & SSCAN as well as Lists.
Fairly safe in a production environment as it does NOT use KEYS * to iterate.
Optionally pass a redis pattern to filter from.
Install
npm install redisscan
Example
var redisScan = require('redisscan');
var redis = require('redis').createClient();
redisScan({
redis: redis,
pattern: 'awesome:key:prefix:*',
keys_only: false,
each_callback: function (type, key, subkey, length, value, cb) {
console.log(type, key, subkey, length, value);
cb();
},
done_callback: function (err) {
console.log("-=-=-=-=-=--=-=-=-");
redis.quit();
}
});
redisScan(parameters):
-
redis
: requirednode-redis
client instance -
pattern
: optional wildcard key pattern to match, e.g:some:key:pattern:*
docs -
keys_only
: optional boolean -- returns nothing but keys, no types,lengths,values etc. (defaults tofalse
) -
count_amt
: optional positive/non-zero integer -- redis hint for work done per SCAN operation (defaults to 10) docs -
each_callback
: requiredfunction (type, key, subkey, length, value, next)
This is called for every string, and every subkey/value in a container when not usingkeys_only
, so outer keys may show up multiple times.-
type
may be"string"
,"hash"
,"set"
,"zset"
,"list"
-
key
is the redis key -
subkey
may benull
or populated with a hash key -
length
is the length of a set or list -
value
is the value of the key or subkey when appropriate -
next()
should be called as a function with no arguments if successful or anError
object if not.
-
-
done_callback
: optional function called when scanning completes with one argument, andError
object if an error ws raised
Note/Warning
If values are changing, there is no guarantee on value integrity. This is not atomic. I recommend using a lock pattern with this function.
License MIT (c) 2014 Nathanael C. Fritz