mm_cachebase 1.8.4 → 1.8.6

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.
@@ -4,199 +4,98 @@
4
4
 
5
5
  | 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
6
6
  |-------|-------|---------|-----------|--------|----------|
7
- | set | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
7
+ | set | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致 |
8
8
  | get | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
9
- | del | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
10
- | has | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
11
- | clear | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
12
- | keys | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
13
- | ttl | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
9
+ | del | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致 |
10
+ | has | ✅ | ✅ | ✅ | ✅ | 所有方式都支持 |
11
+ | clear | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致 |
12
+ | keys | ✅ | ✅ | ✅ | ✅ | 所有方式都支持 |
13
+ | ttl | ✅ | ⚠️ | ✅ | ✅ | Redis、CacheBase和Memory与Redis行为一致,MongoDB行为不一致 |
14
14
  | add | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
15
- | addInt | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
16
- | addStr | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
17
- | sort | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
18
- | list_set | ✅ | ⚠️ | ⚠️ | ⚠️ | 所有方式均通过通用实现支持,但底层可能需要各自实现 |
19
- | list_add | ✅ | ⚠️ | ⚠️ | ⚠️ | 所有方式均通过通用实现支持,但底层可能需要各自实现 |
20
- | list_has | ✅ | ⚠️ | ⚠️ | ⚠️ | 所有方式均通过通用实现支持,但底层可能需要各自实现 |
21
- | list_get | ✅ | ⚠️ | ⚠️ | ⚠️ | 所有方式均通过通用实现支持,但底层可能需要各自实现 |
22
- | list_clear | ✅ | ⚠️ | ⚠️ | ⚠️ | 所有方式均通过通用实现支持,但底层可能需要各自实现 |
15
+ | addInt | ✅ | ❌ | ✅ | ✅ | Redis正常工作,MongoDB追加失败,Memory和CacheBase支持 |
16
+ | addStr | ✅ | ❌ | ✅ | ✅ | Redis正常工作,MongoDB追加失败,Memory和CacheBase支持 |
17
+ | sort | ✅ | ✅ | ❌ | ❌ | Redis和MongoDB支持,其他方式不支持 |
18
+ | exists | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致,支持多键检查并返回数量 |
23
19
 
24
20
  ## Redis兼容方法 - 哈希表操作
25
21
 
26
22
  | 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
27
23
  |-------|-------|---------|-----------|--------|----------|
28
- | hset | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
24
+ | hset | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致,新字段返回1,更新返回0 |
29
25
  | hget | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
30
- | hgetall | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
31
- | hdel | ⚠️ | ⚠️ | ⚠️ | ⚠️ | 所有方式均返回0,但实际能删除字段 |
32
- | hmset | ✅ | ✅ | ✅ | ✅ | 哈希表批量设置,所有方式均正常工作 |
33
- | hmget | ✅ | ✅ | ✅ | ✅ | 哈希表批量获取,所有方式均正常工作 |
34
- | hlen | ✅ | ✅ | ✅ | ✅ | 获取哈希表长度,所有方式均正常工作 |
26
+ | hgetall | ✅ | ✅ | ✅ | ✅ | 所有方式都支持 |
27
+ | hdel | ✅ | ✅ | ✅ | ✅ | 所有方式都支持 |
28
+ | hmset | ✅ | ✅ | ❌ | ❌ | Redis和MongoDB支持,其他方式不支持 |
29
+ | hmget | ❌ | ✅ | ❌ | ❌ | 仅MongoDB支持 |
30
+ | hlen | ✅ | ✅ | ❌ | ❌ | Redis和MongoDB支持,其他方式不支持 |
35
31
 
36
32
  ## Redis兼容方法 - 其他常用命令
37
33
 
38
34
  | 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
39
35
  |-------|-------|---------|-----------|--------|----------|
40
- | expire | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
41
- | incr | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,返回正确数值 |
42
- | decr | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,返回正确数值 |
43
- | exists | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
44
- | mget | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,返回正确的结果数组 |
45
- | mset | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
46
- | pexpire | ✅ | ✅ | ✅ | ✅ | 毫秒级过期时间设置,所有方式均正常工作 |
47
- | persist | ✅ | ✅ | ✅ | ✅ | 移除过期时间,所有方式均正常工作 |
48
- | strlen | ✅ | ✅ | ✅ | ✅ | 字符串长度获取,所有方式均正常工作 |
49
- | type | ✅ | ✅ | ✅ | ✅ | 数据类型检测,所有方式均正常工作 |
50
- | rename | ✅ | ✅ | ✅ | ✅ | 键重命名,所有方式均正常工作 |
36
+ | expire | ✅ | ✅ | ✅ | ✅ | 所有方式都支持 |
37
+ | incr | ✅ | ✅ | ✅ | ✅ | 所有方式都支持 |
38
+ | decr | ✅ | ❌ | ✅ | ✅ | Redis、CacheBase和Memory支持,MongoDB不支持 |
39
+ | mget | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致,返回数组与输入键顺序一致 |
40
+ | mset | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致,返回'OK' |
41
+ | pexpire | ❌ | ❌ | ❌ | ❌ | 所有方式都不支持 |
42
+ | persist | ✅ | ❌ | ✅ | ✅ | Redis、CacheBase和Memory支持,MongoDB不支持 |
43
+ | strlen | ✅ | ❌ | ✅ | ❌ | Redis和CacheBase支持,其他方式不支持 |
44
+ | type | ❌ | ❌ | ❌ | ❌ | 所有方式都不支持 |
45
+ | rename | ❌ | ❌ | ❌ | ❌ | 所有方式都不支持 |
51
46
 
52
47
  ## Redis兼容方法 - 集合操作
53
48
 
54
49
  | 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
55
50
  |-------|-------|---------|-----------|--------|----------|
56
- | sadd | ✅ | ✅ | ✅ | ✅ | 集合添加元素,所有方式均正常工作 |
57
- | srem | ✅ | ✅ | ✅ | ✅ | 集合移除元素,所有方式均正常工作 |
58
- | sismember | ✅ | ✅ | ✅ | ✅ | 检查元素是否在集合中,所有方式均正常工作 |
59
- | smembers | ✅ | ✅ | ✅ | ✅ | 获取集合所有元素,所有方式均正常工作 |
51
+ | sadd | ✅ | ❌ | ❌ | ❌ | 仅Redis支持 |
52
+ | srem | ✅ | ❌ | ❌ | ❌ | 仅Redis支持 |
53
+ | sismember | ✅ | ✅ | ❌ | ❌ | Redis和MongoDB支持,其他方式不支持 |
54
+ | smembers | ✅ | ✅ | ❌ | ❌ | Redis和MongoDB支持,其他方式不支持 |
60
55
 
61
56
  ## 数组/列表操作方法
62
57
 
63
58
  | 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
64
59
  |-------|-------|---------|-----------|--------|----------|
65
- | list_set | ✅ | ✅ | ✅ | ✅ | 已实现并测试通过 |
66
- | list_add | ✅ | ✅ | ✅ | ✅ | 已实现并测试通过 |
67
- | list_has | ✅ | ✅ | ✅ | ✅ | 已实现并测试通过 |
68
- | list_get | ✅ | ✅ | ✅ | ✅ | 已实现并测试通过 |
69
- | list_clear | ✅ | ✅ | ✅ | ✅ | 已实现并测试通过 |
60
+ | list_set | ✅ | ❌ | ✅ | ✅ | Redis、CacheBase和Memory均与Redis行为完全一致 |
61
+ | list_add | ✅ | ❌ | ✅ | ✅ | Redis、CacheBase和Memory均与Redis行为完全一致 |
62
+ | list_has | ✅ | ❌ | ✅ | ✅ | Redis、CacheBase和Memory均与Redis行为完全一致 |
63
+ | list_get | ✅ | ❌ | ✅ | ✅ | Redis、CacheBase和Memory均与Redis行为完全一致,支持范围获取 |
64
+ | list_clear | ✅ | ❌ | ✅ | ✅ | Redis、CacheBase和Memory均支持,保持过期时间 |
70
65
 
71
66
  ## 兼容性报告总结
72
67
 
73
- 基于全面测试,以下是四种缓存方式的兼容性报告:
68
+ 基于实际功能测试,以下是四种缓存方式的兼容性报告:
74
69
 
75
70
  | 方法类别 | CacheBase | Redis | MongoDB | Memory | 状态说明 |
76
71
  |---------|-----------|-------|---------|--------|----------|
77
- | 基础键值操作 | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
78
- | 数组操作 | ⚠️ | ✅ | ⚠️ | ⚠️ | 所有方式通过通用实现支持,但底层可能需要各自实现 |
79
- | 过期时间操作 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
80
- | 原子递增操作 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
81
- | 批量操作 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
82
- | 哈希表基本操作 | ⚠️ | ⚠️ | ⚠️ | ⚠️ | hdel方法返回0,但实际能删除字段,其他方法正常 |
83
- | 哈希表批量操作 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
84
- | 集合操作 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
85
- | 字符串操作 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
86
- | 类型检测 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
87
- | 键重命名 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
88
- | 清理操作 | ✅ | ✅ | ✅ | ✅ | 全兼容 |
72
+ | 基础键值操作 | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致 |
73
+ | 数组操作 | ✅ | ✅ | ❌ | ✅ | Redis、CacheBase和Memory完全支持,MongoDB不支持 |
74
+ | 过期时间操作 | ✅ | ✅ | ✅ | ✅ | 基本过期时间操作支持,但MongoDB不支持persist |
75
+ | 原子递增操作 | ✅ | ✅ | ⚠️ | ✅ | incr和decr都支持,MongoDB不支持decr |
76
+ | 批量操作 | ✅ | ✅ | ✅ | ✅ | 所有方式均与Redis行为完全一致 |
77
+ | 哈希表基本操作 | ✅ | ✅ | ✅ | ✅ | 基本操作均支持 |
78
+ | 哈希表批量操作 | ❌ | ✅ | ✅ | ❌ | Redis和MongoDB支持,其他方式不支持 |
79
+ | 集合操作 | ❌ | ✅ | ⚠️ | ❌ | Redis完整支持,MongoDB支持部分方法,其他方式不支持 |
80
+ | 字符串操作 | ✅ | ✅ | ❌ | ⚠️ | Redis和CacheBase支持,Memory部分支持,MongoDB不支持 |
81
+ | 类型检测 | ❌ | ❌ | ❌ | ❌ | 所有方式都不支持 |
82
+ | 键重命名 | ❌ | ❌ | ❌ | ❌ | 所有方式都不支持 |
83
+ | 清理操作 | ✅ | ✅ | ✅ | ✅ | clear操作正常工作 |
89
84
 
90
85
  ### 测试统计
91
86
 
92
- - **总测试用例**:43个
93
- - **通过数**:43个测试用例
94
- - **整体成功率**:100%
95
- - **注意事项**:hdel方法在所有缓存方式下返回0,但实际能删除字段
96
-
97
- ### 所有缓存方式都支持的功能:
98
- - **核心键值操作**:set, get, exists, del, has, keys, sort(add除外)
99
- - **哈希表操作**:hset, hget, hgetall, hdel, hmset, hmget, hlen
100
- - **过期时间操作**:expire, ttl, persist, pexpire
101
- - **原子递增操作**:incr, decr
102
- - **批量操作**:mset, mget
103
- - **集合操作**:sadd, srem, sismember, smembers
104
- - **字符串操作**:strlen
105
- - **类型检测**:type
106
- - **键重命名**:rename
107
- - **清理操作**:clear
108
- - **数组操作**:list_set, list_add, list_has, list_get, list_clear (通过通用实现)
109
-
110
- ### CacheBase 缓存方式:
111
- - **测试状态**:✅ 所有12个方法类别测试通过
112
- - **兼容性**:完全兼容Redis接口
113
- - **返回值**:所有操作都返回符合预期的结果
114
- - **优点**:无需外部依赖,性能优秀,返回值一致性高,支持持久化
115
-
116
- ### MongoDB 缓存方式:
117
- - **测试状态**:✅ 所有12个方法类别测试通过
118
- - **兼容性**:完全兼容Redis接口
119
- - **返回值**:所有操作都返回正确的结果,包括incr/decr返回数值,mget返回正确的结果数组
120
- - **优点**:支持持久化存储,重启后数据不会丢失
121
-
122
- ### Redis 缓存方式:
123
- - **测试状态**:✅ 所有12个方法类别测试通过
124
- - **通过率**:100%
125
- - **优点**:支持持久化存储,重启后数据不会丢失,支持分布式缓存
126
- - **注意事项**:已修复认证配置问题,现在可以正常使用
127
-
128
- ### Memory 缓存方式:
129
- - **测试状态**:✅ 所有12个方法类别测试通过
130
- - **兼容性**:完全兼容Redis接口
131
- - **优点**:最高性能,纯内存操作,无I/O开销
132
- - **缺点**:不支持持久化,程序重启后数据会丢失
133
-
134
- ### 已确认移除的方法:
135
- - hexists:测试中报错 "TypeError: cache.hexists is not a function"
136
- - hkeys、hvals:已移除
137
-
138
- ## 最佳使用建议
139
-
140
- 1. **Memory 方式**(推荐用于内存临时缓存):
141
- - 所有功能完全兼容,返回值符合预期
142
- - 性能最优,纯内存操作无I/O开销
143
- - 适合短期缓存、临时数据缓存场景
144
- - 不需要额外的外部服务依赖
145
- - 程序重启后数据会丢失
146
-
147
- 2. **CacheBase 方式**(推荐用于单机持久化缓存):
148
- - 所有功能完全兼容,返回值符合预期
149
- - 性能稳定,在多次依赖更新中保持一致表现
150
- - 适合需要持久化但不需要分布式的场景
151
- - 不需要额外的外部服务依赖
152
- - 程序重启后数据不会丢失
153
-
154
- 3. **Redis 方式**(推荐用于分布式持久化缓存):
155
- - 已完全修复所有兼容性问题
156
- - 支持分布式缓存,数据可在多实例间共享
157
- - 适合需要高性能、分布式缓存或Redis特有功能的场景
158
- - 需要外部Redis服务
159
- - 程序重启后数据不会丢失
160
-
161
- 4. **MongoDB 方式**(推荐用于已有MongoDB环境的场景):
162
- - 所有方法均完全兼容Redis接口
163
- - 所有操作都返回正确的结果,包括incr/decr和mget
164
- - 适合需要持久化缓存且已有MongoDB环境的场景
165
- - 提供了数据持久化保障
166
- - 需要外部MongoDB服务
167
- - 程序重启后数据不会丢失
168
-
169
- ## 实际使用建议
170
-
171
- 1. **开发环境**:推荐使用Memory或CacheBase,无需额外配置,使用简单
172
-
173
- 2. **生产环境**:
174
- - 如果需要极致性能且数据不敏感:使用Memory
175
- - 如果需要单机持久化:使用CacheBase
176
- - 如果需要高性能、分布式缓存:使用Redis
177
- - 如果需要缓存持久化且已有MongoDB环境:使用MongoDB
178
-
179
- 3. **跨环境部署**:
180
- - 可以根据环境配置自动切换缓存方式
181
- - 所有缓存方式的返回值特性一致,可以放心切换
182
-
183
- 4. **性能考虑**:
184
- - Memory:纯内存操作,最快但不持久化
185
- - CacheBase:文件系统操作,性能优秀且支持持久化
186
- - Redis:网络操作,但性能优秀,支持持久化和分布式
187
- - MongoDB:网络+磁盘操作,性能相对较低但支持持久化
188
-
189
- ## 兼容性维护建议
190
-
191
- 1. **文档维护**:
192
- - 更新README.md,明确标注支持的方法和各缓存方式的特点
193
-
194
- 2. **测试维护**:
195
- - 保留test.js作为标准全面兼容性测试
196
- - 在发布新版本前运行全面测试
197
-
198
- 3. **错误处理**:
199
- - 对已移除的方法添加更友好的错误提示
200
- - 考虑在代码中添加方法兼容性检测
201
-
202
- 注:✅ 完全兼容/功能正常 | ⚠️ 功能正常但有注意事项 | ❌ 不兼容/未实现/已移除
87
+ - **总测试用例**:38个方法
88
+ - **通过数**:不同缓存方式通过数量不同(Redis最多,CacheBase和Memory次之)
89
+ - **整体支持情况**:
90
+ - Redis:支持31个方法,不支持7个,行为不一致0个
91
+ - MongoDB:支持23个方法,不支持15个,行为不一致0个
92
+ - CacheBase:支持31个方法,不支持7个,行为不一致0个
93
+ - Memory:支持30个方法,不支持7个,行为不一致0个
94
+ - **注意事项**:
95
+ 1. CacheBase和Memory的行为高度一致,只有strlen方法在Memory中不支持
96
+ 2. Redis、CacheBase和Memory在已实现的方法上行为完全一致
97
+ 3. MongoDB完全不支持列表操作方法(list_*)
98
+ 4. addInt和addStr方法已在基类中添加,Redis支持,MongoDB追加失败,CacheBase和Memory支持
99
+ 5. 基础键值操作、批量操作、数组操作在Redis、CacheBase和Memory中表现最佳
100
+ 6. 集合操作只有Redis完整支持
101
+ 7. 所有已实现方法在Redis、CacheBase和Memory中具有完全一致的行为和返回值