Redis Lua Script Manager for NodeJS

node-redis-scripto ==================

  • Lua Scripting on Redis (2.6+) is a killer feature
  • But using them with NodeJs is painful
  • We've to maintain lua script in JavaScript as string or load them via the filesystem manually
  • If we are looking at network performance, we've to manually invoke script load and evasha manually
  • You can place lua script in a directory
  • Just tell the dirname to scripto, it will take care of lua scripts
    var Scripto = require('redis-scripto');
    var scriptManager = new Scripto(redisClient);
    var keys    = ['keyOne', 'keyTwo'];
    var values  = [10, 20];'your-script', keys, values, function(errresult) {
  • By default scripto tries to load scripts into redis (via script load)
  • While scripts are loading, if a script invoked with .run() it will use eval and send the plaintext lua script to redis
  • After scripts loaded, if a script invoked with .run() it will use evalsha and does not send plaintext lua script
  • If the connection to redis dropped, it will remove shas and try again to load scripts once it back online
  • if you need to send the plaintext lua script always. use .eval() method
    scriptManager.eval('your-script', keys, values, function(errresult) {
  • If you just need to load a single script, see following example
    var scriptManager = new Scripto(redisClient);
    scriptManager.loadFromFile('script-one', '/path/to/the/file');'script-one', [], [], function(errresult) {
  • If you need to load scripts just using JavaScript (without loading from the filesystem), see following example.
    var scripts = {
        'script-one': 'return 1000'
    var scriptManager = new Scripto(redisClient);
    scriptManager.load(scripts);'script-one', [], [], function(errresult) {