0.2.3 • Published 11 years ago
gitter-redis-scripto v0.2.3
node-redis-scripto
Intelligent Redis Lua Script Manager for NodeJS
- 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 loadandevashamanually 
Scripto manages lua scripts for you
- You can place lua script in a directory
 - Just tell the 
dirnametoscripto, it will take care of lua scripts 
    var Scripto = require('redis-scripto');
    var scriptManager = new Scripto(redisClient);
    scriptManager.loadFromDir('/path/to/lua/scripts');
    var keys    = ['keyOne', 'keyTwo'];
    var values  = [10, 20];
    scriptManager.run('your-script', keys, values, function(err, result) {
    });Scripto is intelligent
- By default 
scriptotries to load scripts into redis (viascript load) - While scripts are loading, if a script invoked with 
.run()it will useevaland send the plaintext lua script to redis - After scripts loaded, if a script invoked with 
.run()it will useevalshaand 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
 
You've the control with Scripto
- if you need to send the plaintext lua script always. use 
.eval()method 
    scriptManager.eval('your-script', keys, values, function(err, result) {
    });- 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');
    scriptManager.run('script-one', [], [], function(err, result) {
    });- 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);
    scriptManager.run('script-one', [], [], function(err, result) {
    });