bonsaif 1.10.31 → 1.10.33
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.
- package/lib/hookup/redis.js +67 -22
- package/package.json +1 -1
package/lib/hookup/redis.js
CHANGED
|
@@ -9,31 +9,48 @@
|
|
|
9
9
|
let tag = ` ::: B[]NSAIF() ::: => redis.js `;
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
const scan=async(options,db,
|
|
12
|
+
const scan=async(options,db, cursor, pattern, count)=>{ // SCAN cursor [MATCH pattern] [COUNT count]
|
|
13
13
|
const exec = require("./exec");
|
|
14
14
|
const redisConn = await exec.redisConn(options);
|
|
15
15
|
const start = Date.now();
|
|
16
|
-
|
|
16
|
+
|
|
17
|
+
cursor = cursor!=null ? cursor : '0';
|
|
18
|
+
pattern = pattern!=null ? pattern : '*';
|
|
19
|
+
count = count!=null ? count : 100;
|
|
20
|
+
|
|
21
|
+
return new Promise((resolve, reject)=>{
|
|
22
|
+
try{
|
|
23
|
+
redisConn.select(db,function() { /* ... */ });
|
|
24
|
+
|
|
25
|
+
// SCAN necesita los argumentos expandidos, no como array
|
|
26
|
+
redisConn.scan(cursor, 'MATCH', pattern, 'COUNT', count, function (err, res) {
|
|
27
|
+
if (err) {
|
|
28
|
+
reject(err);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const end = Date.now();
|
|
33
|
+
const time = end - start;
|
|
34
|
+
|
|
35
|
+
// res[0] es el nuevo cursor, res[1] es el array de keys
|
|
36
|
+
resolve({
|
|
37
|
+
"cursor": res[0],
|
|
38
|
+
"keys": res[1],
|
|
39
|
+
"count": res[1].length,
|
|
40
|
+
"time": utl.milisegundosASegundos(time)
|
|
41
|
+
});
|
|
42
|
+
|
|
17
43
|
try{
|
|
18
|
-
|
|
19
|
-
const redisScan = require('node-redis-scan');
|
|
20
|
-
const scanner = new redisScan(redisConn);
|
|
21
|
-
scanner.scan(key, (err, matchingKeys) => {
|
|
22
|
-
if (err) throw(err);
|
|
23
|
-
const end = Date.now();
|
|
24
|
-
const time = end - start;
|
|
25
|
-
resolve({"count":matchingKeys.length, "keys":matchingKeys, "time":utl.milisegundosASegundos(time)});
|
|
26
|
-
|
|
27
|
-
try{
|
|
28
|
-
exec.redisClose(redisConn);
|
|
29
|
-
}catch(e){
|
|
30
|
-
utl.log('err.scan '+e);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
44
|
+
exec.redisClose(redisConn);
|
|
33
45
|
}catch(e){
|
|
34
|
-
utl.log('err
|
|
46
|
+
utl.log('err.scan '+e);
|
|
35
47
|
}
|
|
36
|
-
})
|
|
48
|
+
});
|
|
49
|
+
}catch(e){
|
|
50
|
+
utl.log('err scan: '+e);
|
|
51
|
+
reject(e);
|
|
52
|
+
}
|
|
53
|
+
})
|
|
37
54
|
}
|
|
38
55
|
|
|
39
56
|
const set=async(options, db, key, value, expire )=>{
|
|
@@ -743,6 +760,29 @@ const keys=async( options, db, pattern )=>{ // KEYS pattern
|
|
|
743
760
|
})
|
|
744
761
|
}
|
|
745
762
|
|
|
763
|
+
const dbsize=async( options, db )=>{ // DBSIZE
|
|
764
|
+
const exec = require("./exec");
|
|
765
|
+
const redisConn = await exec.redisConn(options);
|
|
766
|
+
const start = Date.now();
|
|
767
|
+
return new Promise((resolve, reject)=>{
|
|
768
|
+
try{
|
|
769
|
+
redisConn.select(db,function() { /* ... */ });
|
|
770
|
+
redisConn.dbsize(function (err, res) {
|
|
771
|
+
const end = Date.now();
|
|
772
|
+
const time = end - start;
|
|
773
|
+
resolve({"dbsize":db, "count":res, "err":err, "res":res, "time":utl.milisegundosASegundos(time)});
|
|
774
|
+
try{
|
|
775
|
+
exec.redisClose(redisConn);
|
|
776
|
+
}catch(e){
|
|
777
|
+
utl.log('err.dbsize '+e);
|
|
778
|
+
}
|
|
779
|
+
});
|
|
780
|
+
}catch(e){
|
|
781
|
+
utl.log('err dbsize'+e);
|
|
782
|
+
}
|
|
783
|
+
})
|
|
784
|
+
}
|
|
785
|
+
|
|
746
786
|
const api=async(options, dbm, json)=>{
|
|
747
787
|
const exec = require("./exec");
|
|
748
788
|
|
|
@@ -760,7 +800,7 @@ const api=async(options, dbm, json)=>{
|
|
|
760
800
|
let lstop = json.stop!=null?json.stop*1:-1;
|
|
761
801
|
let {field:id, val:vid} = getFirstField(filter);
|
|
762
802
|
|
|
763
|
-
let ltdml = ['sinter','sunionstore','scard','hmget','hfind','upsert','set','get','scan','incrby','sadd','srem','smembers','hset','hgetall','del','incrbyfloat','expireat','setnx','hsetnx','hmset','expire','lrange','keys'];
|
|
803
|
+
let ltdml = ['sinter','sunionstore','scard','hmget','hfind','upsert','set','get','scan','incrby','sadd','srem','smembers','hset','hgetall','del','incrbyfloat','expireat','setnx','hsetnx','hmset','expire','lrange','keys','dbsize'];
|
|
764
804
|
for (let x of ltdml){
|
|
765
805
|
if (utl.ObjectEmpty(json,x)){
|
|
766
806
|
dml = x; break;
|
|
@@ -772,6 +812,9 @@ const api=async(options, dbm, json)=>{
|
|
|
772
812
|
let keysArray = json.keys!=null ? json.keys : [];
|
|
773
813
|
let fieldsArray = json.fields!=null ? json.fields : [];
|
|
774
814
|
let destination = json.destination!=null ? json.destination : '';
|
|
815
|
+
let cursor = json.cursor!=null ? json.cursor : '0';
|
|
816
|
+
let pattern = json.pattern!=null ? json.pattern : key;
|
|
817
|
+
let scan_count = json.count!=null ? json.count : 100;
|
|
775
818
|
|
|
776
819
|
let r;
|
|
777
820
|
switch (dml){
|
|
@@ -779,7 +822,7 @@ const api=async(options, dbm, json)=>{
|
|
|
779
822
|
case 'get': r = await get(options,dbm,key); break;
|
|
780
823
|
case 'hfind': r = await hfind(options,dbm,key,filter,order,limit); break;
|
|
781
824
|
case 'upsert': r = await upsert(options,dbm,key,value,id,vid,expire); break;
|
|
782
|
-
case 'scan': r = await scan(options,dbm,
|
|
825
|
+
case 'scan': r = await scan(options,dbm,cursor,pattern,scan_count); break;
|
|
783
826
|
case 'incrby': r = await incrby(options,dbm,key,value,expire,counter); break;
|
|
784
827
|
case 'sadd': r = await sadd(options,dbm,key,value,expire); break;
|
|
785
828
|
case 'srem': r = await srem(options,dbm,key,value); break;
|
|
@@ -795,6 +838,7 @@ const api=async(options, dbm, json)=>{
|
|
|
795
838
|
case 'expire': r = await expire(options,dbm,key,expire); break;
|
|
796
839
|
case 'lrange': r = await lrange(options,dbm,key,lstart,lstop); break;
|
|
797
840
|
case 'keys': r = await keys(options,dbm,key); break;
|
|
841
|
+
case 'dbsize': r = await dbsize(options,dbm); break;
|
|
798
842
|
case 'sinter': r = await sinter(options,dbm,Array.isArray(key) ? key : [key]); break;
|
|
799
843
|
case 'hmget': r = await hmget(options,dbm,key,fieldsArray); break;
|
|
800
844
|
case 'sunionstore': r = await sunionstore(options,dbm,destination,keysArray); break;
|
|
@@ -908,5 +952,6 @@ module.exports ={
|
|
|
908
952
|
expire,
|
|
909
953
|
expireat,
|
|
910
954
|
lrange,
|
|
911
|
-
keys
|
|
955
|
+
keys,
|
|
956
|
+
dbsize
|
|
912
957
|
}
|