-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrdb.js
114 lines (93 loc) · 3.34 KB
/
rdb.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// Redis Database Interface
// (c)copyright 2014-2015 by Gerald Wodni <[email protected]>
"use strict";
var redis = require("redis");
var async = require( "async" );
module.exports = function _rdb( k, opts ) {
opts = opts || {};
if( process.env.REDIS_HOST ) {
opts.host = process.env.REDIS_HOST;
console.log( "Redis-host-env:".bold.magenta, opts.host );
}
if( process.env.REDIS_PORT ) {
opts.port = process.env.REDIS_PORT;
console.log( "Redis-host-env:".bold.magenta, opts.port );
}
var rdb = redis.createClient( opts );
rdb.getField = function _rdb_getField( item, field ) {
var index = field.indexOf( "." );
if( index > 0 )
return _rdb_getField( item[ field.substring( 0, index ) ], field.substring( index + 1 ) );
else
return item[ field ]
};
rdb.cloneClient = function _rdb_cloneClient() {
return redis.createClient( opts );
};
rdb.on( "error", function( err ) {
console.log( "Redis-error ".red.bold, err.stack.yellow );
//console.trace();
});
/* get hash by index-hash */
rdb.hhgetall = function( indexHash, prefix, itemname, callback ) {
rdb.hget( indexHash, itemname, function( err, data ) {
if( err )
return callback( err );
rdb.hgetall( prefix + data, function( err, data ) {
if( err )
return callback( err );
return callback( null, data );
});
});
};
rdb.sall = function( setname, worker, callback ) {
rdb.smembers( setname, function( err, data ) {
if( err )
return callback( err );
async.map( data, worker, callback );
});
};
rdb.shgetall = function( setname, prefix, callback ) {
rdb.sall( setname, function( item, next ) {
rdb.hgetall( prefix + item, next );
}, callback );
}
rdb.ssgetall = function( setname, prefix, callback ) {
rdb.sall( setname, function( item, next ) {
rdb.smembers( prefix + item, function( err, data ) {
if( err )
return next( err );
return next( null, data );
});
}, callback );
}
rdb.lall = function( listname, worker, callback ) {
rdb.lrange( listname, 0, -1, function( err, data ) {
if( err )
return callback( err );
async.map( data, worker, callback );
});
};
/* delete all keys from index-list */
rdb.ldel = function( listname, prefix, callback ) {
rdb.lall( listname, prefix, function( item, next ) {
rdb.del( prefix + "item", next );
}, callback );
};
/* get all hash-items by list */
rdb.lhgetall = function( listname, prefix, callback ) {
rdb.lrange( listname, 0, -1, function( err, data ) {
if( err )
return callback( err );
async.map( data, function( item, next ) {
rdb.hgetall( prefix + item, function( err, data ) {
if( err )
callback( err );
else
callback( null, _.extend( data, { hkey: item } ) );
});
}, callback );
});
};
return rdb;
};