Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including redisscan with all npm packages installed. Try it out:

var redisscan = require("redisscan")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

redisscan v2.0.0

Scan through all redis keys and containers, calling back each value individually.


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.


npm install redisscan


var redisScan = require('redisscan');
var redis     = require('redis').createClient();

    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);
    done_callback: function (err) {


  • redis: required node-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 to false)
  • count_amt: optional positive/non-zero integer -- redis hint for work done per SCAN operation (defaults to 10) docs
  • each_callback: required function (type, key, subkey, length, value, next) This is called for every string, and every subkey/value in a container when not using keys_only, so outer keys may show up multiple times.
    • type may be "string", "hash", "set", "zset", "list"
    • key is the redis key
    • subkey may be null 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 an Error object if not.
  • done_callback: optional function called when scanning completes with one argument, and Error object if an error ws raised


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

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free