Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Use first word of multi word commands

Close #363.

Signed-off-by: DTrejo <david.daniel.trejo@gmail.com>
  • Loading branch information...
commit f0ae6642f91c2375a0becb7596060aab1ff27cf5 1 parent 938c052
@dohse dohse authored DTrejo committed
Showing with 28 additions and 1 deletion.
  1. +9 −0 README.md
  2. +3 −1 index.js
  3. +16 −0 test.js
View
9 README.md
@@ -543,6 +543,15 @@ This will display:
`send command` is data sent into Redis and `on_data` is data received from Redis.
+## Multi-word commands
+
+To execute redis multi-word commands like `SCRIPT LOAD` or `CLIENT LIST` pass
+the second word as first parameter:
+
+ client.script('load', 'return 1');
+ client.multi().script('load', 'return 1').exec(...);
+ client.multi([['script', 'load', 'return 1']]).exec(...);
+
## client.send_command(command_name, args, callback)
Used internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis
View
4 index.js
@@ -865,7 +865,9 @@ commands = set_union(["get", "set", "setnx", "setex", "append", "strlen", "del",
"persist", "slaveof", "debug", "config", "subscribe", "unsubscribe", "psubscribe", "punsubscribe", "publish", "watch", "unwatch", "cluster",
"restore", "migrate", "dump", "object", "client", "eval", "evalsha"], require("./lib/commands"));
-commands.forEach(function (command) {
+commands.forEach(function (fullCommand) {
+ var command = fullCommand.split(' ')[0];
+
RedisClient.prototype[command] = function (args, callback) {
if (Array.isArray(args) && typeof callback === "function") {
return this.send_command(command, args, callback);
View
16 test.js
@@ -406,6 +406,22 @@ tests.EVAL_1 = function () {
}
};
+tests.SCRIPT_LOAD = function() {
+ if (server_version_at_least(bclient, [2, 5, 0])) {
+ var name = "SCRIPT_LOAD",
+ command = "return 1",
+ commandSha = crypto.createHash('sha1').update(command).digest('hex');
+
+ bclient.script("load", command, function(err, result) {
+ assert.strictEqual(result.toString(), commandSha);
+ next(name);
+ });
+ } else {
+ console.log("Skipping " + name + " because server version isn't new enough.");
+ next(name);
+ }
+};
+
tests.WATCH_MULTI = function () {
var name = 'WATCH_MULTI', multi;
Please sign in to comment.
Something went wrong with that request. Please try again.