mm_cachebase 1.4.4 → 1.4.5

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 (3) hide show
  1. package/index.js +44 -21
  2. package/package.json +1 -1
  3. package/test.js +16 -6
package/index.js CHANGED
@@ -14,7 +14,7 @@ class CacheBase {
14
14
  */
15
15
  constructor() {
16
16
  // 缓存的字典
17
- this.list = [];
17
+ this.dict = {};
18
18
  // 到期通知函数
19
19
  this.func;
20
20
  /*
@@ -35,6 +35,22 @@ class CacheBase {
35
35
  }
36
36
  */
37
37
  }
38
+
39
+ get list() {
40
+ var list = [];
41
+ for (var key in this.dict) {
42
+ list.push(this.dict[key]);
43
+ }
44
+ return list;
45
+ }
46
+
47
+ set list(lt) {
48
+ this.dict = {};
49
+ for (var i = 0; i < lt.length; i++) {
50
+ var o = lt;
51
+ this.dict[o.name] = o;
52
+ }
53
+ }
38
54
  }
39
55
 
40
56
  /**
@@ -43,11 +59,9 @@ class CacheBase {
43
59
  * @return {String} 对象
44
60
  */
45
61
  CacheBase.prototype.getObj = function(key) {
46
- var obj = this.list.getObj({
47
- name: key
48
- });
62
+ var obj = this.dict[key];
49
63
  if (obj && obj.expires) {
50
- var cha = Date.parse(obj.expires) - Date.parse(new Date());
64
+ var cha = obj.expires - new Date().stamp();
51
65
  if (cha < 1) {
52
66
  this.delObj(key);
53
67
  obj = undefined;
@@ -61,9 +75,7 @@ CacheBase.prototype.getObj = function(key) {
61
75
  * @return {Number} 成功返回1,否则返回0
62
76
  */
63
77
  CacheBase.prototype.delObj = function(key) {
64
- this.list.del({
65
- name: key
66
- }, true);
78
+ delete this.dict[key];
67
79
  return 1;
68
80
  };
69
81
 
@@ -73,16 +85,16 @@ CacheBase.prototype.delObj = function(key) {
73
85
  * @return {Number} 成功返回1,否则返回0
74
86
  */
75
87
  CacheBase.prototype.addObj = function(obj) {
76
- obj.id = obj.name.md5();
88
+ // obj.id = obj.name.md5();
77
89
  var maxAge = obj.maxAge;
78
90
  if (maxAge > 0) {
79
91
  // 如果maxAge大于0则设置缓存时长
80
- obj.expires = new Date().addSeconds(maxAge).toUTCString();
92
+ obj.expires = new Date().addSeconds(maxAge).stamp();
81
93
  } else {
82
94
  obj.maxAge = -1;
83
95
  obj.expires = null;
84
96
  }
85
- this.list.push(obj);
97
+ this.dict[obj.name] = obj;
86
98
  return 1;
87
99
  };
88
100
 
@@ -111,7 +123,7 @@ CacheBase.prototype.ttl = async function(key, maxAge) {
111
123
  } else if (maxAge > 0) {
112
124
  // 如果maxAge大于0则设置缓存时长
113
125
  obj.maxAge = maxAge;
114
- obj.expires = new Date().addSeconds(maxAge).toUTCString();
126
+ obj.expires = new Date().addSeconds(maxAge).stamp();
115
127
  } else if (maxAge < 0) {
116
128
  // 如果maxAge小于0则设置缓存时长为永久
117
129
  obj.maxAge = -1;
@@ -330,19 +342,20 @@ CacheBase.prototype.clear = async function(key) {
330
342
  var _this = this;
331
343
  return new Promise((resolve, reject) => {
332
344
  if (key) {
333
- for (var i = this.list.length - 1; i >= 0; i--) {
334
- if (this.list[i].name.has(key)) {
335
- _this.delObj(this.list[i].name);
345
+ var keys = Object.keys(this.dict);
346
+ for (var i = 0; i < keys.length; i++) {
347
+ var name = keys[i];
348
+ if (name.has(key)) {
349
+ _this.delObj(name);
336
350
  }
337
351
  }
338
352
  } else {
339
- for (var i = this.list.length - 1; i >= 0; i--) {
340
- _this.delObj(this.list[i].name);
341
- }
353
+ this.dict = {};
342
354
  }
343
355
  resolve(1);
344
356
  });
345
357
  };
358
+
346
359
  /**
347
360
  * @description 排序
348
361
  * @param {String} key 键
@@ -366,6 +379,7 @@ CacheBase.prototype.sort = async function(key, way, obj_key) {
366
379
  }
367
380
  });
368
381
  };
382
+
369
383
  /**
370
384
  * @description 获取所有键名
371
385
  * @param {String} key 键 支持*号, 前面加*表示后面名称一致, 前后加*表示包含名称, 后面加*表示前面名称一致
@@ -375,13 +389,22 @@ CacheBase.prototype.keys = async function(key) {
375
389
  var _this = this;
376
390
  return new Promise((resolve, reject) => {
377
391
  if (key) {
378
- var list = _this.list.search(key, 'name');
392
+ var keys = Object.keys(this.dict);
393
+ var list = [];
394
+ for (var i = 0; i < keys.length; i++) {
395
+ var name = keys[i];
396
+ if (name.has(key)) {
397
+ list.push(name);
398
+ }
399
+ }
379
400
  resolve(list.toArr('name'));
380
401
  } else {
381
- resolve(_this.list.toArr('name'));
402
+ var keys = Object.keys(this.dict);
403
+ resolve(keys);
382
404
  }
383
405
  });
384
406
  };
407
+
385
408
  /**
386
409
  * @description 修改数组缓存
387
410
  * @param {String} key 键
@@ -511,4 +534,4 @@ CacheBase.prototype.notity = function(obj) {
511
534
  };
512
535
 
513
536
  // 导出CacheBase函数
514
- module.exports = CacheBase;
537
+ module.exports = CacheBase;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mm_cachebase",
3
- "version": "1.4.4",
3
+ "version": "1.4.5",
4
4
  "description": "这是超级美眉cachebase帮助函数模块,一个简单的内存缓存",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/test.js CHANGED
@@ -10,6 +10,12 @@ async function test() {
10
10
  // await cache.set("d", "十五", 10);
11
11
  // bl = await cache.set("age1", 10, 10);
12
12
  bl = await cache.set("age", 13, 10);
13
+ setTimeout(async () => {
14
+ console.log(await cache.get("age"));
15
+ }, 9000);
16
+ setTimeout(async () => {
17
+ console.log(await cache.get("age"));
18
+ }, 10000);
13
19
  // bl = await cache.addInt("age", -12);
14
20
  // bl = await cache.add("age", 15, 5);
15
21
  // console.log(bl);
@@ -26,18 +32,21 @@ async function test() {
26
32
 
27
33
  // msg = await cache.setrange("a", 4, "asd");
28
34
  // console.log(msg);
29
- var len = await cache.addStr("a", "丰");
30
- // console.log("追加文本" + len);
35
+ var str = await cache.addStr("a", "丰");
36
+ console.log("追加文本" + str);
31
37
  // var bl = await cache.has("a");
32
38
  // console.log("是否存在" + bl);
33
39
 
34
40
  var num = await cache.add("arr", ['第三', '第四'], 8);
35
41
  bl = await cache.list_clear("arr", ['第三', '第四', '第w']); // 清空数组,并重新增加成员
36
- // console.log("清空数组" + bl);
42
+ console.log("清空数组" + bl);
37
43
  //
38
44
  // num = await cache.list_set("arr", ['第一', '第三', '第二'], 8);
39
45
  num = await cache.list_add("arr", '第s');
40
46
  console.log("设置数组" + num);
47
+ var arr = await cache.list_get("arr", 0);
48
+ console.log("查到数组", arr)
49
+
41
50
  // time = await cache.ttl("arr");
42
51
  // console.log(time);
43
52
  // bl = await cache.ttl("arr", -1);
@@ -46,7 +55,7 @@ async function test() {
46
55
  // console.log(time);
47
56
 
48
57
  var bl = await cache.list_has("arr", '第一');
49
- console.log(bl);
58
+ console.log("包含", bl);
50
59
  // await cache.sort("arr", 'asc');
51
60
  // var ar = await cache.list_get("arr", 2);
52
61
  // console.log(ar);
@@ -57,12 +66,13 @@ async function test() {
57
66
  // ret = await cache.clear(); // 清空缓存
58
67
  // console.log(ret);
59
68
  var ret = await cache.getrange("a", 2, 3);
60
- console.log(ret);
69
+ console.log("这是?", ret);
61
70
  // var arr = await cache.keys("a*");
62
71
  // console.log(arr);
63
72
  // ret = await cache.clear('a*'); // 清空缓存
64
73
  // console.log(ret);
65
- console.log(cache.list);
74
+ console.log("存储的数据字典", cache.dict);
75
+ console.log("存储的数据列表", cache.list);
66
76
  // cache.dispose() // 销毁资源
67
77
  }
68
78
  test();