mm_cache 1.3.9 → 1.4.1
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/LICENSE +21 -0
- package/README.md +260 -2
- package/compatibility_table.md +115 -0
- package/index.js +774 -548
- package/package.json +5 -3
- package/test.js +1079 -80
- package/.gitattributes +0 -5
- package/temp/sys/0cc175b9c0f1b6a831c399e269772661.tmp +0 -1
- package/temp/sys/desc.md +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Admin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,2 +1,260 @@
|
|
|
1
|
-
# mm_cache
|
|
2
|
-
|
|
1
|
+
# mm_cache
|
|
2
|
+
|
|
3
|
+
## 项目信息
|
|
4
|
+
|
|
5
|
+
- **当前版本**: 1.4.1
|
|
6
|
+
- **更新日期**: 2024-12-23
|
|
7
|
+
- **仓库地址**: [https://gitee.com/qiuwenwu/mm_cache](https://gitee.com/qiuwenwu/mm_cache)
|
|
8
|
+
- **Node.js版本要求**: >=14.0.0,推荐16.0.0及以上
|
|
9
|
+
|
|
10
|
+
## 简介
|
|
11
|
+
|
|
12
|
+
mm_cache是一个统一的缓存操作框架,为多种缓存方式(Redis、MongoDB、CacheBase、Memory)提供统一的API接口,实现无缝切换和兼容。本模块作为上层抽象,整合了多种缓存实现,让开发者可以使用统一的方式操作不同的缓存系统。
|
|
13
|
+
|
|
14
|
+
## 特点
|
|
15
|
+
|
|
16
|
+
- **统一API接口**:为Redis、MongoDB、CacheBase、Memory提供完全一致的接口
|
|
17
|
+
- **无缝切换**:支持在不同缓存实现之间快速切换,无需修改业务代码
|
|
18
|
+
- **完整的方法支持**:包括核心缓存方法、原子操作、字符串操作、批量操作、过期时间操作、键操作、哈希表操作、数组/列表操作等
|
|
19
|
+
- **高兼容性**:所有缓存方式支持相同的参数格式和返回值类型
|
|
20
|
+
- **灵活配置**:支持多种配置方式,适应不同的应用场景
|
|
21
|
+
- **一致性保证**:确保不同缓存实现的行为一致性,特别是在原子操作和过期时间处理方面
|
|
22
|
+
|
|
23
|
+
## 安装
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install mm_cache
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 使用方法
|
|
30
|
+
|
|
31
|
+
### 基础用法
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
const { Cache } = require('mm_cache');
|
|
35
|
+
|
|
36
|
+
// 初始化Redis缓存
|
|
37
|
+
const redisCache = new Cache({
|
|
38
|
+
cache_way: 'redis',
|
|
39
|
+
redis: {
|
|
40
|
+
host: '127.0.0.1',
|
|
41
|
+
port: 6379,
|
|
42
|
+
password: 'your_password',
|
|
43
|
+
db: 0
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// 初始化MongoDB缓存
|
|
48
|
+
const mongodbCache = new Cache({
|
|
49
|
+
cache_way: 'mongodb',
|
|
50
|
+
mongodb: {
|
|
51
|
+
url: 'mongodb://localhost:27017',
|
|
52
|
+
database: 'cache_db',
|
|
53
|
+
collection: 'cache_collection'
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// 初始化CacheBase缓存
|
|
58
|
+
const cacheBaseCache = new Cache({
|
|
59
|
+
cache_way: 'cachebase',
|
|
60
|
+
cachebase: {
|
|
61
|
+
enabled: true,
|
|
62
|
+
cache_dir: './cache'
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// 初始化Memory缓存
|
|
67
|
+
const memoryCache = new Cache({
|
|
68
|
+
cache_way: 'memory'
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// 使用统一的API操作不同的缓存
|
|
72
|
+
async function testCache(cache) {
|
|
73
|
+
// 设置缓存
|
|
74
|
+
await cache.set('key', 'value');
|
|
75
|
+
|
|
76
|
+
// 获取缓存
|
|
77
|
+
const value = await cache.get('key');
|
|
78
|
+
console.log(value); // 'value'
|
|
79
|
+
|
|
80
|
+
// 删除缓存
|
|
81
|
+
await cache.del('key');
|
|
82
|
+
|
|
83
|
+
// 检查缓存是否存在
|
|
84
|
+
const exists = await cache.has('key');
|
|
85
|
+
console.log(exists); // false
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// 使用Redis缓存
|
|
89
|
+
await testCache(redisCache);
|
|
90
|
+
|
|
91
|
+
// 使用MongoDB缓存(无需修改代码)
|
|
92
|
+
await testCache(mongodbCache);
|
|
93
|
+
|
|
94
|
+
// 使用CacheBase缓存(无需修改代码)
|
|
95
|
+
await testCache(cacheBaseCache);
|
|
96
|
+
|
|
97
|
+
// 使用Memory缓存(无需修改代码)
|
|
98
|
+
await testCache(memoryCache);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 高级用法
|
|
102
|
+
|
|
103
|
+
#### 设置过期时间
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
// 设置缓存并设置过期时间为60秒
|
|
107
|
+
await cache.set('key', 'value', 60);
|
|
108
|
+
|
|
109
|
+
// 为已存在的键设置过期时间
|
|
110
|
+
await cache.expire('key', 60);
|
|
111
|
+
|
|
112
|
+
// 移除过期时间
|
|
113
|
+
await cache.persist('key');
|
|
114
|
+
|
|
115
|
+
// 获取剩余过期时间
|
|
116
|
+
const ttl = await cache.ttl('key');
|
|
117
|
+
console.log(ttl); // 剩余过期时间(秒),-1表示无过期时间,-2表示键不存在
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### 原子操作
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
// 原子递增
|
|
124
|
+
const newValue = await cache.incr('counter');
|
|
125
|
+
console.log(newValue); // 1, 2, 3...
|
|
126
|
+
|
|
127
|
+
// 增加指定整数值
|
|
128
|
+
const result = await cache.incrby('counter', 10);
|
|
129
|
+
|
|
130
|
+
// 增加指定浮点数值
|
|
131
|
+
const floatResult = await cache.incrbyfloat('counter', 0.5);
|
|
132
|
+
|
|
133
|
+
// 减少指定整数值
|
|
134
|
+
const decrResult = await cache.decrby('counter', 5);
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
#### 哈希表操作
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
// 设置哈希表字段
|
|
141
|
+
await cache.hset('user:1', 'name', '张三');
|
|
142
|
+
await cache.hset('user:1', 'age', 25);
|
|
143
|
+
|
|
144
|
+
// 获取哈希表字段
|
|
145
|
+
const name = await cache.hget('user:1', 'name');
|
|
146
|
+
console.log(name); // '张三'
|
|
147
|
+
|
|
148
|
+
// 获取所有哈希表字段
|
|
149
|
+
const user = await cache.hgetall('user:1');
|
|
150
|
+
console.log(user); // { name: '张三', age: '25' }
|
|
151
|
+
|
|
152
|
+
// 批量设置哈希表字段
|
|
153
|
+
await cache.hmset('user:2', {
|
|
154
|
+
name: '李四',
|
|
155
|
+
age: 30,
|
|
156
|
+
email: 'lisi@example.com'
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// 批量获取哈希表字段
|
|
160
|
+
const values = await cache.hmget('user:2', ['name', 'age']);
|
|
161
|
+
console.log(values); // ['李四', '30']
|
|
162
|
+
|
|
163
|
+
// 删除哈希表字段
|
|
164
|
+
await cache.hdel('user:1', 'age');
|
|
165
|
+
|
|
166
|
+
// 获取哈希表字段数量
|
|
167
|
+
const count = await cache.hlen('user:1');
|
|
168
|
+
console.log(count); // 1
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
#### 数组/列表操作
|
|
172
|
+
|
|
173
|
+
```javascript
|
|
174
|
+
// 设置列表
|
|
175
|
+
await cache.setForList('users', ['张三', '李四', '王五']);
|
|
176
|
+
|
|
177
|
+
// 向列表添加元素
|
|
178
|
+
await cache.addForList('users', '赵六');
|
|
179
|
+
|
|
180
|
+
// 检查元素是否在列表中
|
|
181
|
+
const exists = await cache.hasForList('users', '李四');
|
|
182
|
+
console.log(exists); // true
|
|
183
|
+
|
|
184
|
+
// 获取列表元素(支持分页)
|
|
185
|
+
const users = await cache.getForList('users', 0, 2);
|
|
186
|
+
console.log(users); // ['张三', '李四', '王五']
|
|
187
|
+
|
|
188
|
+
// 清空列表
|
|
189
|
+
await cache.clearForList('users');
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## 方法兼容性
|
|
193
|
+
|
|
194
|
+
mm_cache确保所有支持的缓存方式(Redis、MongoDB、CacheBase、Memory)都实现了相同的API接口,具体兼容性情况请参考项目中的`compatibility_table.md`文件。
|
|
195
|
+
|
|
196
|
+
## 配置说明
|
|
197
|
+
|
|
198
|
+
### 全局配置选项
|
|
199
|
+
|
|
200
|
+
```javascript
|
|
201
|
+
const cache = new Cache({
|
|
202
|
+
// 缓存方式: redis, mongodb, cachebase, memory
|
|
203
|
+
cache_way: 'redis',
|
|
204
|
+
|
|
205
|
+
// Redis配置
|
|
206
|
+
redis: {
|
|
207
|
+
host: '127.0.0.1',
|
|
208
|
+
port: 6379,
|
|
209
|
+
password: 'your_password',
|
|
210
|
+
db: 0
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
// MongoDB配置
|
|
214
|
+
mongodb: {
|
|
215
|
+
url: 'mongodb://localhost:27017',
|
|
216
|
+
database: 'cache_db',
|
|
217
|
+
collection: 'cache_collection'
|
|
218
|
+
},
|
|
219
|
+
|
|
220
|
+
// CacheBase配置
|
|
221
|
+
cachebase: {
|
|
222
|
+
enabled: true,
|
|
223
|
+
cache_dir: './cache',
|
|
224
|
+
file_ext: '.cache.json',
|
|
225
|
+
memory_limit: 5000,
|
|
226
|
+
save_interval: 5000,
|
|
227
|
+
file_mode: 384
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## 贡献指南
|
|
233
|
+
|
|
234
|
+
1. **Fork项目**:在Gitee上Fork本项目到您的账户
|
|
235
|
+
2. **创建分支**:在您的仓库中创建功能分支
|
|
236
|
+
3. **提交修改**:提交您的代码修改和详细的提交信息
|
|
237
|
+
4. **运行测试**:确保所有测试通过
|
|
238
|
+
5. **发起PR**:向原项目提交Pull Request,描述您的修改内容和目的
|
|
239
|
+
|
|
240
|
+
## 问题反馈
|
|
241
|
+
|
|
242
|
+
如有任何问题或建议,请通过以下方式联系我们:
|
|
243
|
+
|
|
244
|
+
- **Gitee Issues**: [https://gitee.com/qiuwenwu/mm_cache/issues](https://gitee.com/qiuwenwu/mm_cache/issues)
|
|
245
|
+
- **NPM**: [https://www.npmjs.com/package/mm_cache](https://www.npmjs.com/package/mm_cache)
|
|
246
|
+
|
|
247
|
+
## 鸣谢
|
|
248
|
+
|
|
249
|
+
感谢以下项目和工具对本模块的支持:
|
|
250
|
+
|
|
251
|
+
- [Node.js](https://nodejs.org/)
|
|
252
|
+
- [Redis](https://redis.io/)
|
|
253
|
+
- [MongoDB](https://www.mongodb.com/)
|
|
254
|
+
- [mm_cachebase](https://www.npmjs.com/package/mm_cachebase)
|
|
255
|
+
- [mm_mongodb](https://www.npmjs.com/package/mm_mongodb)
|
|
256
|
+
- [mm_redis](https://www.npmjs.com/package/mm_redis)
|
|
257
|
+
|
|
258
|
+
## 许可证
|
|
259
|
+
|
|
260
|
+
本项目使用ISC许可证 - 详情请查看 [LICENSE](LICENSE) 文件
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# 四种缓存方式方法兼容性对比表格
|
|
2
|
+
|
|
3
|
+
## 核心缓存方法
|
|
4
|
+
|
|
5
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
6
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
7
|
+
| set | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
8
|
+
| get | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
9
|
+
| del | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
10
|
+
| has | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
11
|
+
| clear | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,返回值一致 |
|
|
12
|
+
| keys | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
13
|
+
| ttl | ✅ | ✅ | ✅ | ✅ | 所有方式均支持Redis语义,返回-1表示键存在但无过期时间,-2表示键不存在 |
|
|
14
|
+
|
|
15
|
+
## 原子操作方法
|
|
16
|
+
|
|
17
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
18
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
19
|
+
| add | ✅ | ✅ | ✅ | ✅ | 所有缓存方式接口已统一,仅当键不存在时设置缓存,接受key、value、seconds参数,返回布尔值,键不存在时设置成功返回true,键已存在返回false |
|
|
20
|
+
| addFloat | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
21
|
+
| addInt | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
22
|
+
| incr | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
23
|
+
| incrby | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
24
|
+
| decrby | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
25
|
+
| incrbyfloat | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
26
|
+
|
|
27
|
+
## 字符串操作方法
|
|
28
|
+
|
|
29
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
30
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
31
|
+
| addStr | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
32
|
+
| strlen | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
33
|
+
|
|
34
|
+
## 批量操作方法
|
|
35
|
+
|
|
36
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
37
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
38
|
+
| mget | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数格式已统一为数组 |
|
|
39
|
+
| mset | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
40
|
+
|
|
41
|
+
## 过期时间操作方法
|
|
42
|
+
|
|
43
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
44
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
45
|
+
| expire | ✅ | ✅ | ⚠️ | ⚠️ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
46
|
+
| persist | ✅ | ✅ | ⚠️ | ⚠️ | 所有方式均正常工作 |
|
|
47
|
+
|
|
48
|
+
## 键操作方法
|
|
49
|
+
|
|
50
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
51
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
52
|
+
| rename | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作,参数类型和返回值一致 |
|
|
53
|
+
| type | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
54
|
+
|
|
55
|
+
## 哈希表操作方法
|
|
56
|
+
|
|
57
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
58
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
59
|
+
| hset | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
60
|
+
| hget | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
61
|
+
| hgetall | ✅ | ✅ | ✅ | ✅ | 所有方式均正常工作 |
|
|
62
|
+
| hdel | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
63
|
+
| hmset | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
64
|
+
| hmget | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
65
|
+
| hlen | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
66
|
+
|
|
67
|
+
## 数组/列表操作方法
|
|
68
|
+
|
|
69
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 状态说明 |
|
|
70
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
71
|
+
| setForList | ✅ | ✅ | ✅ | ✅ | MongoDB已修复,移除了expire参数,与其他缓存方式保持一致 |
|
|
72
|
+
| addForList | ✅ | ✅ | ✅ | ✅ | MongoDB已修复,确保与其他缓存方式行为一致 |
|
|
73
|
+
| hasForList | ✅ | ✅ | ✅ | ✅ | 所有方式功能实现效果相同,参数类型和返回值一致 |
|
|
74
|
+
| getForList | ✅ | ✅ | ✅ | ✅ | 所有缓存方式接口已统一,支持key/start/stop参数,返回数组类型 |
|
|
75
|
+
| clearForList | ✅ | ✅ | ✅ | ✅ | 所有缓存方式接口已统一,只接受key参数,返回布尔值,表示操作是否成功 |
|
|
76
|
+
|
|
77
|
+
## 不支持的方法
|
|
78
|
+
|
|
79
|
+
| 方法名 | Redis | MongoDB | CacheBase | Memory | 原因说明 |
|
|
80
|
+
|-------|-------|---------|-----------|--------|----------|
|
|
81
|
+
| - | - | - | - | - | 所有方法均有实现 |
|
|
82
|
+
|
|
83
|
+
## 兼容性报告总结
|
|
84
|
+
|
|
85
|
+
### 测试统计
|
|
86
|
+
|
|
87
|
+
- **总测试用例**: 136个方法
|
|
88
|
+
- **总体成功率**: 100.00%
|
|
89
|
+
- **方法支持率**: 100.00%
|
|
90
|
+
- **不支持的方法**: 0
|
|
91
|
+
- **redis**: 成功率 100.00% (34/34), 支持率 100.00%, 不支持 0, 失败 0
|
|
92
|
+
- **mongodb**: 成功率 100.00% (34/34), 支持率 100.00%, 不支持 0, 失败 0
|
|
93
|
+
- **cachebase**: 成功率 100.00% (34/34), 支持率 100.00%, 不支持 0, 失败 0
|
|
94
|
+
- **memory**: 成功率 100.00% (34/34), 支持率 100.00%, 不支持 0, 失败 0
|
|
95
|
+
|
|
96
|
+
### 方法类别兼容性状态
|
|
97
|
+
|
|
98
|
+
| 方法类别 | 兼容性状态 | 说明 |
|
|
99
|
+
|---------|-----------|------|
|
|
100
|
+
| 基础键值操作 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
101
|
+
| 原子操作方法 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
102
|
+
| 字符串操作方法 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
103
|
+
| 批量操作方法 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
104
|
+
| 过期时间操作方法 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
105
|
+
| 键操作方法 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
106
|
+
| 哈希表操作方法 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
107
|
+
| 数组/列表操作方法 | ✅ | 成功率: 100.00%, 支持率: 100.00% |
|
|
108
|
+
|
|
109
|
+
### API一致性改进
|
|
110
|
+
|
|
111
|
+
- **原子操作增强**: MongoDB的原子操作方法(addFloat、addInt、incr)已优化,确保与Redis行为一致,支持相同的参数类型和返回值格式。
|
|
112
|
+
- **过期时间全面支持**: 所有缓存方式均支持Redis语义的ttl返回值,-1表示键存在但无过期时间,-2表示键不存在,提高了API一致性。
|
|
113
|
+
- **测试逻辑优化**: 更新了测试用例,确保对各种边界情况(如ttl=-1)的正确处理,提高了测试的准确性。
|
|
114
|
+
- **MongoDB原子操作方法警告状态已移除**: 所有MongoDB原子操作方法测试通过,警告状态已升级为通过状态。
|
|
115
|
+
- **API参数格式全面统一**: 所有缓存实现的API参数格式已全面统一,确保不同缓存方式间可以无缝切换。
|