redis 0.6.7 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.npmignore +1 -0
  2. package/README.md +172 -48
  3. package/{tests → benches}/buffer_bench.js +0 -0
  4. package/benches/hiredis_parser.js +38 -0
  5. package/benches/re_sub_test.js +14 -0
  6. package/{tests → benches}/reconnect_test.js +4 -2
  7. package/{tests → benches}/stress/codec.js +0 -0
  8. package/{tests → benches}/stress/pubsub/pub.js +0 -0
  9. package/{tests → benches}/stress/pubsub/run +0 -0
  10. package/{tests → benches}/stress/pubsub/server.js +0 -0
  11. package/{tests → benches}/stress/rpushblpop/pub.js +0 -0
  12. package/{tests → benches}/stress/rpushblpop/run +0 -0
  13. package/{tests → benches}/stress/rpushblpop/server.js +0 -0
  14. package/{tests → benches}/stress/speed/00 +0 -0
  15. package/{tests → benches}/stress/speed/plot +0 -0
  16. package/{tests → benches}/stress/speed/size-rate.png +0 -0
  17. package/{tests → benches}/stress/speed/speed.js +0 -0
  18. package/{tests → benches}/sub_quit_test.js +0 -0
  19. package/changelog.md +35 -0
  20. package/diff_multi_bench_output.js +87 -0
  21. package/{eval_test.js → examples/eval.js} +0 -0
  22. package/examples/simple.js +9 -2
  23. package/examples/sort.js +17 -0
  24. package/generate_commands.js +0 -1
  25. package/index.js +467 -214
  26. package/lib/commands.js +22 -1
  27. package/lib/parser/hiredis.js +15 -10
  28. package/lib/parser/javascript.js +14 -13
  29. package/lib/queue.js +5 -2
  30. package/lib/util.js +10 -5
  31. package/mem.js +11 -0
  32. package/multi_bench.js +197 -107
  33. package/package.json +6 -13
  34. package/test.js +465 -95
  35. package/simple_test.js +0 -3
  36. package/tests/test_start_stop.js +0 -17
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+
3
+ var colors = require('colors'),
4
+ fs = require('fs'),
5
+ _ = require('underscore'),
6
+ metrics = require('metrics'),
7
+
8
+ // `node diff_multi_bench_output.js before.txt after.txt`
9
+ before = process.argv[2],
10
+ after = process.argv[3];
11
+
12
+ if (!before || !after) {
13
+ console.log('Please supply two file arguments:');
14
+ var n = __filename;
15
+ n = n.substring(n.lastIndexOf('/', n.length));
16
+ console.log(' ./' + n + ' multiBenchBefore.txt multiBenchAfter.txt');
17
+ console.log('To generate multiBenchBefore.txt, run');
18
+ console.log(' node multi_bench.js > multiBenchBefore.txt');
19
+ console.log('Thank you for benchmarking responsibly.');
20
+ return;
21
+ }
22
+
23
+ var before_lines = fs.readFileSync(before, 'utf8').split('\n'),
24
+ after_lines = fs.readFileSync(after, 'utf8').split('\n');
25
+
26
+ console.log('Comparing before,', before.green, '(', before_lines.length,
27
+ 'lines)', 'to after,', after.green, '(', after_lines.length, 'lines)');
28
+
29
+ var total_ops = new metrics.Histogram.createUniformHistogram();
30
+
31
+ before_lines.forEach(function(b, i) {
32
+ var a = after_lines[i];
33
+ if (!a || !b || !b.trim() || !a.trim()) {
34
+ // console.log('#ignored#', '>'+a+'<', '>'+b+'<');
35
+ return;
36
+ }
37
+
38
+ b_words = b.split(' ').filter(is_whitespace);
39
+ a_words = a.split(' ').filter(is_whitespace);
40
+
41
+ var ops =
42
+ [b_words, a_words]
43
+ .map(function(words) {
44
+ // console.log(words);
45
+ return parseInt10(words.slice(-2, -1));
46
+ }).filter(function(num) {
47
+ var isNaN = !num && num !== 0;
48
+ return !isNaN;
49
+ });
50
+ if (ops.length != 2) return
51
+
52
+ var delta = ops[1] - ops[0];
53
+
54
+ total_ops.update(delta);
55
+
56
+ delta = humanize_diff(delta);
57
+ console.log(
58
+ // name of test
59
+ command_name(a_words) == command_name(b_words)
60
+ ? command_name(a_words) + ':'
61
+ : '404:',
62
+ // results of test
63
+ ops.join(' -> '), 'ops/sec (∆', delta, ')');
64
+ });
65
+
66
+ console.log('Mean difference in ops/sec:', humanize_diff(total_ops.mean()));
67
+
68
+ function is_whitespace(s) {
69
+ return !!s.trim();
70
+ }
71
+
72
+ function parseInt10(s) {
73
+ return parseInt(s, 10);
74
+ }
75
+
76
+ // green if greater than 0, red otherwise
77
+ function humanize_diff(num) {
78
+ if (num > 0) {
79
+ return ('+' + num).green;
80
+ }
81
+ return ('' + num).red;
82
+ }
83
+
84
+ function command_name(words) {
85
+ var line = words.join(' ');
86
+ return line.substr(0, line.indexOf(','));
87
+ }
File without changes
@@ -2,16 +2,23 @@ var redis = require("redis"),
2
2
  client = redis.createClient();
3
3
 
4
4
  client.on("error", function (err) {
5
- console.log("Redis connection error to " + client.host + ":" + client.port + " - " + err);
5
+ console.log("error event - " + client.host + ":" + client.port + " - " + err);
6
6
  });
7
7
 
8
8
  client.set("string key", "string val", redis.print);
9
9
  client.hset("hash key", "hashtest 1", "some value", redis.print);
10
10
  client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
11
11
  client.hkeys("hash key", function (err, replies) {
12
+ if (err) {
13
+ return console.error("error response - " + err);
14
+ }
15
+
12
16
  console.log(replies.length + " replies:");
13
17
  replies.forEach(function (reply, i) {
14
18
  console.log(" " + i + ": " + reply);
15
19
  });
16
- client.quit();
20
+ });
21
+
22
+ client.quit(function (err, res) {
23
+ console.log("Exiting from quit command.");
17
24
  });
@@ -0,0 +1,17 @@
1
+ var redis = require("redis"),
2
+ client = redis.createClient();
3
+
4
+ client.sadd("mylist", 1);
5
+ client.sadd("mylist", 2);
6
+ client.sadd("mylist", 3);
7
+
8
+ client.set("weight_1", 5);
9
+ client.set("weight_2", 500);
10
+ client.set("weight_3", 1);
11
+
12
+ client.set("object_1", "foo");
13
+ client.set("object_2", "bar");
14
+ client.set("object_3", "qux");
15
+
16
+ client.sort("mylist", "by", "weight_*", "get", "object_*", redis.print);
17
+ // Prints Reply: qux,foo,bar
@@ -1,5 +1,4 @@
1
1
  var http = require("http"),
2
- sys = require("sys"),
3
2
  fs = require("fs");
4
3
 
5
4
  function prettyCurrentTime() {