mm_mongodb 1.4.5 → 1.4.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.
- package/README.md +132 -214
- package/compatibility_table.md +85 -0
- package/index.js +1161 -34
- package/package.json +1 -1
- package/test_redis_compatibility.js +123 -0
package/package.json
CHANGED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
const { MongoDB } = require('./index.js');
|
|
2
|
+
|
|
3
|
+
async function testRedisCompatibility() {
|
|
4
|
+
console.log('开始测试Redis兼容API...');
|
|
5
|
+
|
|
6
|
+
const mb = new MongoDB('default', __dirname);
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
// 先建立数据库连接
|
|
10
|
+
console.log('正在连接数据库...');
|
|
11
|
+
await mb.open();
|
|
12
|
+
console.log('数据库连接成功!');
|
|
13
|
+
|
|
14
|
+
// 测试核心缓存方法
|
|
15
|
+
console.log('\n=== 测试核心缓存方法 ===');
|
|
16
|
+
await mb.del('test_key');
|
|
17
|
+
const setResult = await mb.set('test_key', 'test_value');
|
|
18
|
+
console.log('set结果:', setResult);
|
|
19
|
+
|
|
20
|
+
const getResult = await mb.get('test_key');
|
|
21
|
+
console.log('get结果:', getResult);
|
|
22
|
+
|
|
23
|
+
const existsResult = await mb.exists('test_key');
|
|
24
|
+
console.log('exists结果:', existsResult);
|
|
25
|
+
|
|
26
|
+
// 测试哈希表操作
|
|
27
|
+
console.log('\n=== 测试哈希表操作 ===');
|
|
28
|
+
await mb.del('test_hash');
|
|
29
|
+
await mb.hset('test_hash', 'field1', 'value1');
|
|
30
|
+
await mb.hset('test_hash', 'field2', 'value2');
|
|
31
|
+
|
|
32
|
+
const hgetResult = await mb.hget('test_hash', 'field1');
|
|
33
|
+
console.log('hget结果:', hgetResult);
|
|
34
|
+
|
|
35
|
+
const hgetallResult = await mb.hgetall('test_hash');
|
|
36
|
+
console.log('hgetall结果:', hgetallResult);
|
|
37
|
+
|
|
38
|
+
const hmgetResult = await mb.hmget('test_hash', ['field1', 'field2']);
|
|
39
|
+
console.log('hmget结果:', hmgetResult);
|
|
40
|
+
|
|
41
|
+
const hkeysResult = await mb.hkeys('test_hash');
|
|
42
|
+
console.log('hkeys结果:', hkeysResult);
|
|
43
|
+
|
|
44
|
+
const hvalsResult = await mb.hvals('test_hash');
|
|
45
|
+
console.log('hvals结果:', hvalsResult);
|
|
46
|
+
|
|
47
|
+
const hlenResult = await mb.hlen('test_hash');
|
|
48
|
+
console.log('hlen结果:', hlenResult);
|
|
49
|
+
|
|
50
|
+
// 测试列表操作
|
|
51
|
+
console.log('\n=== 测试列表操作 ===');
|
|
52
|
+
await mb.del('test_list');
|
|
53
|
+
await mb.rpush('test_list', 'item1');
|
|
54
|
+
await mb.rpush('test_list', 'item2');
|
|
55
|
+
await mb.lpush('test_list', 'item0');
|
|
56
|
+
|
|
57
|
+
const llenResult = await mb.llen('test_list');
|
|
58
|
+
console.log('llen结果:', llenResult);
|
|
59
|
+
|
|
60
|
+
const lrangeResult = await mb.lrange('test_list', 0, -1);
|
|
61
|
+
console.log('lrange结果:', lrangeResult);
|
|
62
|
+
|
|
63
|
+
const lindexResult = await mb.lindex('test_list', 1);
|
|
64
|
+
console.log('lindex结果:', lindexResult);
|
|
65
|
+
|
|
66
|
+
// 测试集合操作
|
|
67
|
+
console.log('\n=== 测试集合操作 ===');
|
|
68
|
+
await mb.del('test_set');
|
|
69
|
+
await mb.saddMulti('test_set', ['member1', 'member2']);
|
|
70
|
+
|
|
71
|
+
const smembersResult = await mb.smembers('test_set');
|
|
72
|
+
console.log('smembers结果:', smembersResult);
|
|
73
|
+
|
|
74
|
+
const scardResult = await mb.scard('test_set');
|
|
75
|
+
console.log('scard结果:', scardResult);
|
|
76
|
+
|
|
77
|
+
const sismemberResult = await mb.sismember('test_set', 'member1');
|
|
78
|
+
console.log('sismember结果:', sismemberResult);
|
|
79
|
+
|
|
80
|
+
// 测试有序集合操作
|
|
81
|
+
console.log('\n=== 测试有序集合操作 ===');
|
|
82
|
+
await mb.del('test_zset');
|
|
83
|
+
await mb.zadd('test_zset', 1, 'zmember1');
|
|
84
|
+
await mb.zadd('test_zset', 2, 'zmember2');
|
|
85
|
+
|
|
86
|
+
const zcardResult = await mb.zcard('test_zset');
|
|
87
|
+
console.log('zcard结果:', zcardResult);
|
|
88
|
+
|
|
89
|
+
const zscoreResult = await mb.zscore('test_zset', 'zmember1');
|
|
90
|
+
console.log('zscore结果:', zscoreResult);
|
|
91
|
+
|
|
92
|
+
const zrangebyscoreResult = await mb.zrangebyscore('test_zset', 1, 2);
|
|
93
|
+
console.log('zrangebyscore结果:', zrangebyscoreResult);
|
|
94
|
+
|
|
95
|
+
// 测试批量操作
|
|
96
|
+
console.log('\n=== 测试批量操作 ===');
|
|
97
|
+
const msetResult = await mb.mset({
|
|
98
|
+
'batch_key1': 'batch_value1',
|
|
99
|
+
'batch_key2': 'batch_value2'
|
|
100
|
+
});
|
|
101
|
+
console.log('mset结果:', msetResult);
|
|
102
|
+
|
|
103
|
+
const mgetResult = await mb.mget(['batch_key1', 'batch_key2']);
|
|
104
|
+
console.log('mget结果:', mgetResult);
|
|
105
|
+
|
|
106
|
+
// 清理测试数据
|
|
107
|
+
console.log('\n=== 清理测试数据 ===');
|
|
108
|
+
const keysToDelete = ['test_key', 'test_hash', 'test_list', 'test_set', 'test_zset', 'batch_key1', 'batch_key2'];
|
|
109
|
+
for (const key of keysToDelete) {
|
|
110
|
+
await mb.del(key);
|
|
111
|
+
}
|
|
112
|
+
console.log('测试数据清理完成');
|
|
113
|
+
|
|
114
|
+
console.log('\n✅ 所有Redis兼容API测试完成!');
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.error('❌ 测试失败:', error);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
} finally {
|
|
119
|
+
await mb.close();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
testRedisCompatibility();
|