@pangza/redis 0.0.0-stage → 1.0.0
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 +2 -2
- package/dist/Redis.d.ts +98 -0
- package/dist/Redis.d.ts.map +1 -0
- package/dist/Redis.js +678 -0
- package/dist/Redis.js.map +1 -0
- package/dist/cache.d.ts +16 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +82 -0
- package/dist/cache.js.map +1 -0
- package/dist/decorators.d.ts +15 -0
- package/dist/decorators.d.ts.map +1 -0
- package/dist/decorators.js +30 -0
- package/dist/decorators.js.map +1 -0
- package/dist/enable.d.ts +12 -0
- package/dist/enable.d.ts.map +1 -0
- package/dist/enable.js +30 -0
- package/dist/enable.js.map +1 -0
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +22 -0
- package/dist/errors.js.map +1 -0
- package/dist/flag.d.ts +2 -0
- package/dist/flag.d.ts.map +1 -0
- package/dist/flag.js +8 -0
- package/dist/flag.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/rateLimit.d.ts +15 -0
- package/dist/rateLimit.d.ts.map +1 -0
- package/dist/rateLimit.js +90 -0
- package/dist/rateLimit.js.map +1 -0
- package/dist/redisson/RCountDownLatch.d.ts +12 -0
- package/dist/redisson/RCountDownLatch.d.ts.map +1 -0
- package/dist/redisson/RCountDownLatch.js +48 -0
- package/dist/redisson/RCountDownLatch.js.map +1 -0
- package/dist/redisson/RFairLock.d.ts +7 -0
- package/dist/redisson/RFairLock.d.ts.map +1 -0
- package/dist/redisson/RFairLock.js +32 -0
- package/dist/redisson/RFairLock.js.map +1 -0
- package/dist/redisson/RLock.d.ts +44 -0
- package/dist/redisson/RLock.d.ts.map +1 -0
- package/dist/redisson/RLock.js +156 -0
- package/dist/redisson/RLock.js.map +1 -0
- package/dist/redisson/RMultiLock.d.ts +18 -0
- package/dist/redisson/RMultiLock.d.ts.map +1 -0
- package/dist/redisson/RMultiLock.js +95 -0
- package/dist/redisson/RMultiLock.js.map +1 -0
- package/dist/redisson/RReadWriteLock.d.ts +9 -0
- package/dist/redisson/RReadWriteLock.d.ts.map +1 -0
- package/dist/redisson/RReadWriteLock.js +51 -0
- package/dist/redisson/RReadWriteLock.js.map +1 -0
- package/dist/redisson/RSemaphore.d.ts +13 -0
- package/dist/redisson/RSemaphore.d.ts.map +1 -0
- package/dist/redisson/RSemaphore.js +55 -0
- package/dist/redisson/RSemaphore.js.map +1 -0
- package/dist/redisson/Redisson.d.ts +45 -0
- package/dist/redisson/Redisson.d.ts.map +1 -0
- package/dist/redisson/Redisson.js +111 -0
- package/dist/redisson/Redisson.js.map +1 -0
- package/dist/redisson/index.d.ts +12 -0
- package/dist/redisson/index.d.ts.map +1 -0
- package/dist/redisson/index.js +32 -0
- package/dist/redisson/index.js.map +1 -0
- package/dist/redisson/objects.d.ts +116 -0
- package/dist/redisson/objects.d.ts.map +1 -0
- package/dist/redisson/objects.js +384 -0
- package/dist/redisson/objects.js.map +1 -0
- package/dist/redisson/scripts.d.ts +22 -0
- package/dist/redisson/scripts.d.ts.map +1 -0
- package/dist/redisson/scripts.js +196 -0
- package/dist/redisson/scripts.js.map +1 -0
- package/dist/redisson/types.d.ts +140 -0
- package/dist/redisson/types.d.ts.map +1 -0
- package/dist/redisson/types.js +8 -0
- package/dist/redisson/types.js.map +1 -0
- package/dist/redisson/utils.d.ts +12 -0
- package/dist/redisson/utils.d.ts.map +1 -0
- package/dist/redisson/utils.js +82 -0
- package/dist/redisson/utils.js.map +1 -0
- package/dist/types.d.ts +141 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +25 -0
- package/dist/types.js.map +1 -0
- package/package.json +36 -4
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Redisson = void 0;
|
|
4
|
+
exports.createRedisson = createRedisson;
|
|
5
|
+
exports.randomLockToken = randomLockToken;
|
|
6
|
+
const crypto_1 = require("crypto");
|
|
7
|
+
const RFairLock_1 = require("./RFairLock");
|
|
8
|
+
const RLock_1 = require("./RLock");
|
|
9
|
+
const RMultiLock_1 = require("./RMultiLock");
|
|
10
|
+
const RReadWriteLock_1 = require("./RReadWriteLock");
|
|
11
|
+
const RCountDownLatch_1 = require("./RCountDownLatch");
|
|
12
|
+
const RSemaphore_1 = require("./RSemaphore");
|
|
13
|
+
const objects_1 = require("./objects");
|
|
14
|
+
const types_1 = require("./types");
|
|
15
|
+
const utils_1 = require("./utils");
|
|
16
|
+
/**
|
|
17
|
+
* Redisson 风格门面(基于现有 Redis 连接)。
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const lock = Redisson.getLock('order:pay');
|
|
21
|
+
* await lock.lock();
|
|
22
|
+
* try { ... } finally { await lock.unlock(); }
|
|
23
|
+
*/
|
|
24
|
+
class RedissonClient {
|
|
25
|
+
constructor(config = {}) {
|
|
26
|
+
this.clientId = (0, utils_1.createClientId)();
|
|
27
|
+
this.config = { ...types_1.defaultRedissonConfig, ...config };
|
|
28
|
+
}
|
|
29
|
+
/** 覆盖看门狗等配置 */
|
|
30
|
+
configure(config) {
|
|
31
|
+
this.config = { ...this.config, ...config };
|
|
32
|
+
}
|
|
33
|
+
getClientId() {
|
|
34
|
+
return this.clientId;
|
|
35
|
+
}
|
|
36
|
+
// ─── Locks ───────────────────────────────────────────────────
|
|
37
|
+
getLock(name) {
|
|
38
|
+
return new RLock_1.RedissonLock(name, this.clientId, this.config);
|
|
39
|
+
}
|
|
40
|
+
getFairLock(name) {
|
|
41
|
+
return (0, RFairLock_1.createFairLock)(name, this.clientId, this.config);
|
|
42
|
+
}
|
|
43
|
+
getReadWriteLock(name) {
|
|
44
|
+
return new RReadWriteLock_1.RedissonReadWriteLock(name, this.clientId, this.config);
|
|
45
|
+
}
|
|
46
|
+
getMultiLock(...locks) {
|
|
47
|
+
return new RMultiLock_1.RedissonMultiLock(locks);
|
|
48
|
+
}
|
|
49
|
+
// ─── Synchronizers ───────────────────────────────────────────
|
|
50
|
+
getSemaphore(name) {
|
|
51
|
+
return new RSemaphore_1.RedissonSemaphore(name);
|
|
52
|
+
}
|
|
53
|
+
getCountDownLatch(name) {
|
|
54
|
+
return new RCountDownLatch_1.RedissonCountDownLatch(name);
|
|
55
|
+
}
|
|
56
|
+
// ─── Objects ─────────────────────────────────────────────────
|
|
57
|
+
getAtomicLong(name) {
|
|
58
|
+
return new objects_1.RedissonAtomicLong(name);
|
|
59
|
+
}
|
|
60
|
+
getBucket(name) {
|
|
61
|
+
return new objects_1.RedissonBucket(name);
|
|
62
|
+
}
|
|
63
|
+
getMap(name) {
|
|
64
|
+
return new objects_1.RedissonMap(name);
|
|
65
|
+
}
|
|
66
|
+
getSet(name) {
|
|
67
|
+
return new objects_1.RedissonSet(name);
|
|
68
|
+
}
|
|
69
|
+
getList(name) {
|
|
70
|
+
return new objects_1.RedissonList(name);
|
|
71
|
+
}
|
|
72
|
+
getScoredSortedSet(name) {
|
|
73
|
+
return new objects_1.RedissonScoredSortedSet(name);
|
|
74
|
+
}
|
|
75
|
+
getTopic(name) {
|
|
76
|
+
return new objects_1.RedissonTopic(name);
|
|
77
|
+
}
|
|
78
|
+
getRateLimiter(name) {
|
|
79
|
+
return new objects_1.RedissonRateLimiter(name);
|
|
80
|
+
}
|
|
81
|
+
getBitSet(name) {
|
|
82
|
+
return new objects_1.RedissonBitSet(name);
|
|
83
|
+
}
|
|
84
|
+
getQueue(name) {
|
|
85
|
+
return new objects_1.RedissonQueue(name);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 持锁执行(看门狗);等价于 getLock + lock + unlock。
|
|
89
|
+
*/
|
|
90
|
+
async withLock(name, fn, leaseTimeMs) {
|
|
91
|
+
const lock = this.getLock(name);
|
|
92
|
+
await lock.lock(leaseTimeMs);
|
|
93
|
+
try {
|
|
94
|
+
return await fn();
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
await lock.unlock();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** 默认单例(进程级 clientId) */
|
|
102
|
+
exports.Redisson = new RedissonClient();
|
|
103
|
+
/** 创建独立客户端(不同 clientId,用于测试或多实例语义) */
|
|
104
|
+
function createRedisson(config) {
|
|
105
|
+
return new RedissonClient(config);
|
|
106
|
+
}
|
|
107
|
+
/** 生成随机 token(测试辅助) */
|
|
108
|
+
function randomLockToken() {
|
|
109
|
+
return (0, crypto_1.randomBytes)(8).toString("hex");
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=Redisson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Redisson.js","sourceRoot":"","sources":["../../src/redisson/Redisson.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { Redisson, createRedisson } from "./Redisson";
|
|
2
|
+
export type { RedissonClient } from "./Redisson";
|
|
3
|
+
export { RedissonLock } from "./RLock";
|
|
4
|
+
export { createFairLock } from "./RFairLock";
|
|
5
|
+
export { RedissonReadWriteLock } from "./RReadWriteLock";
|
|
6
|
+
export { RedissonMultiLock } from "./RMultiLock";
|
|
7
|
+
export { RedissonSemaphore } from "./RSemaphore";
|
|
8
|
+
export { RedissonCountDownLatch } from "./RCountDownLatch";
|
|
9
|
+
export { RedissonAtomicLong, RedissonBucket, RedissonMap, RedissonSet, RedissonList, RedissonScoredSortedSet, RedissonTopic, RedissonRateLimiter, RedissonBitSet, RedissonQueue, } from "./objects";
|
|
10
|
+
export type { RedissonConfig, RLock, RReadWriteLock, RSemaphore, RCountDownLatch, RAtomicLong, RBucket, RMap, RSet, RList, RScoredSortedSet, RTopic, RRateLimiter, RBitSet, RQueue, } from "./types";
|
|
11
|
+
export { defaultRedissonConfig } from "./types";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/redisson/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,cAAc,EACd,KAAK,EACL,cAAc,EACd,UAAU,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultRedissonConfig = exports.RedissonQueue = exports.RedissonBitSet = exports.RedissonRateLimiter = exports.RedissonTopic = exports.RedissonScoredSortedSet = exports.RedissonList = exports.RedissonSet = exports.RedissonMap = exports.RedissonBucket = exports.RedissonAtomicLong = exports.RedissonCountDownLatch = exports.RedissonSemaphore = exports.RedissonMultiLock = exports.RedissonReadWriteLock = exports.createFairLock = exports.RedissonLock = exports.createRedisson = exports.Redisson = void 0;
|
|
4
|
+
var Redisson_1 = require("./Redisson");
|
|
5
|
+
Object.defineProperty(exports, "Redisson", { enumerable: true, get: function () { return Redisson_1.Redisson; } });
|
|
6
|
+
Object.defineProperty(exports, "createRedisson", { enumerable: true, get: function () { return Redisson_1.createRedisson; } });
|
|
7
|
+
var RLock_1 = require("./RLock");
|
|
8
|
+
Object.defineProperty(exports, "RedissonLock", { enumerable: true, get: function () { return RLock_1.RedissonLock; } });
|
|
9
|
+
var RFairLock_1 = require("./RFairLock");
|
|
10
|
+
Object.defineProperty(exports, "createFairLock", { enumerable: true, get: function () { return RFairLock_1.createFairLock; } });
|
|
11
|
+
var RReadWriteLock_1 = require("./RReadWriteLock");
|
|
12
|
+
Object.defineProperty(exports, "RedissonReadWriteLock", { enumerable: true, get: function () { return RReadWriteLock_1.RedissonReadWriteLock; } });
|
|
13
|
+
var RMultiLock_1 = require("./RMultiLock");
|
|
14
|
+
Object.defineProperty(exports, "RedissonMultiLock", { enumerable: true, get: function () { return RMultiLock_1.RedissonMultiLock; } });
|
|
15
|
+
var RSemaphore_1 = require("./RSemaphore");
|
|
16
|
+
Object.defineProperty(exports, "RedissonSemaphore", { enumerable: true, get: function () { return RSemaphore_1.RedissonSemaphore; } });
|
|
17
|
+
var RCountDownLatch_1 = require("./RCountDownLatch");
|
|
18
|
+
Object.defineProperty(exports, "RedissonCountDownLatch", { enumerable: true, get: function () { return RCountDownLatch_1.RedissonCountDownLatch; } });
|
|
19
|
+
var objects_1 = require("./objects");
|
|
20
|
+
Object.defineProperty(exports, "RedissonAtomicLong", { enumerable: true, get: function () { return objects_1.RedissonAtomicLong; } });
|
|
21
|
+
Object.defineProperty(exports, "RedissonBucket", { enumerable: true, get: function () { return objects_1.RedissonBucket; } });
|
|
22
|
+
Object.defineProperty(exports, "RedissonMap", { enumerable: true, get: function () { return objects_1.RedissonMap; } });
|
|
23
|
+
Object.defineProperty(exports, "RedissonSet", { enumerable: true, get: function () { return objects_1.RedissonSet; } });
|
|
24
|
+
Object.defineProperty(exports, "RedissonList", { enumerable: true, get: function () { return objects_1.RedissonList; } });
|
|
25
|
+
Object.defineProperty(exports, "RedissonScoredSortedSet", { enumerable: true, get: function () { return objects_1.RedissonScoredSortedSet; } });
|
|
26
|
+
Object.defineProperty(exports, "RedissonTopic", { enumerable: true, get: function () { return objects_1.RedissonTopic; } });
|
|
27
|
+
Object.defineProperty(exports, "RedissonRateLimiter", { enumerable: true, get: function () { return objects_1.RedissonRateLimiter; } });
|
|
28
|
+
Object.defineProperty(exports, "RedissonBitSet", { enumerable: true, get: function () { return objects_1.RedissonBitSet; } });
|
|
29
|
+
Object.defineProperty(exports, "RedissonQueue", { enumerable: true, get: function () { return objects_1.RedissonQueue; } });
|
|
30
|
+
var types_1 = require("./types");
|
|
31
|
+
Object.defineProperty(exports, "defaultRedissonConfig", { enumerable: true, get: function () { return types_1.defaultRedissonConfig; } });
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/redisson/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsD;AAA7C,oGAAA,QAAQ,OAAA;AAAE,0GAAA,cAAc,OAAA;AAEjC,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AACvB,mDAAyD;AAAhD,uHAAA,qBAAqB,OAAA;AAC9B,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,2CAAiD;AAAxC,+GAAA,iBAAiB,OAAA;AAC1B,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA;AAC/B,qCAWmB;AAVjB,6GAAA,kBAAkB,OAAA;AAClB,yGAAA,cAAc,OAAA;AACd,sGAAA,WAAW,OAAA;AACX,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,kHAAA,uBAAuB,OAAA;AACvB,wGAAA,aAAa,OAAA;AACb,8GAAA,mBAAmB,OAAA;AACnB,yGAAA,cAAc,OAAA;AACd,wGAAA,aAAa,OAAA;AAmBf,iCAAgD;AAAvC,8GAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { RAtomicLong, RBitSet, RBucket, RList, RMap, RQueue, RRateLimiter, RScoredSortedSet, RSet, RTopic } from "./types";
|
|
2
|
+
export declare class RedissonAtomicLong implements RAtomicLong {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
constructor(name: string);
|
|
5
|
+
private k;
|
|
6
|
+
get(): Promise<number>;
|
|
7
|
+
set(value: number): Promise<void>;
|
|
8
|
+
getAndSet(value: number): Promise<number>;
|
|
9
|
+
incrementAndGet(): Promise<number>;
|
|
10
|
+
decrementAndGet(): Promise<number>;
|
|
11
|
+
addAndGet(delta: number): Promise<number>;
|
|
12
|
+
compareAndSet(expect: number, update: number): Promise<boolean>;
|
|
13
|
+
delete(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
export declare class RedissonBucket<T = unknown> implements RBucket<T> {
|
|
16
|
+
readonly name: string;
|
|
17
|
+
constructor(name: string);
|
|
18
|
+
private k;
|
|
19
|
+
get(): Promise<T | null>;
|
|
20
|
+
set(value: T, ttlSeconds?: number): Promise<void>;
|
|
21
|
+
getAndDelete(): Promise<T | null>;
|
|
22
|
+
compareAndSet(expect: T, update: T): Promise<boolean>;
|
|
23
|
+
trySet(value: T, ttlSeconds?: number): Promise<boolean>;
|
|
24
|
+
delete(): Promise<boolean>;
|
|
25
|
+
isExists(): Promise<boolean>;
|
|
26
|
+
expire(ttlSeconds: number): Promise<boolean>;
|
|
27
|
+
}
|
|
28
|
+
export declare class RedissonMap<V = string> implements RMap<V> {
|
|
29
|
+
readonly name: string;
|
|
30
|
+
constructor(name: string);
|
|
31
|
+
private k;
|
|
32
|
+
private ser;
|
|
33
|
+
private de;
|
|
34
|
+
get(key: string): Promise<V | undefined>;
|
|
35
|
+
put(key: string, value: V): Promise<void>;
|
|
36
|
+
putAll(entries: Record<string, V>): Promise<void>;
|
|
37
|
+
remove(key: string): Promise<boolean>;
|
|
38
|
+
containsKey(key: string): Promise<boolean>;
|
|
39
|
+
readAllMap(): Promise<Record<string, V>>;
|
|
40
|
+
size(): Promise<number>;
|
|
41
|
+
clear(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
export declare class RedissonSet implements RSet {
|
|
44
|
+
readonly name: string;
|
|
45
|
+
constructor(name: string);
|
|
46
|
+
private k;
|
|
47
|
+
add(...members: string[]): Promise<number>;
|
|
48
|
+
remove(...members: string[]): Promise<number>;
|
|
49
|
+
contains(member: string): Promise<boolean>;
|
|
50
|
+
readAll(): Promise<string[]>;
|
|
51
|
+
size(): Promise<number>;
|
|
52
|
+
clear(): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
export declare class RedissonList implements RList {
|
|
55
|
+
readonly name: string;
|
|
56
|
+
constructor(name: string);
|
|
57
|
+
private k;
|
|
58
|
+
add(...values: string[]): Promise<number>;
|
|
59
|
+
get(index: number): Promise<string | null>;
|
|
60
|
+
range(start: number, stop: number): Promise<string[]>;
|
|
61
|
+
remove(count: number, value: string): Promise<number>;
|
|
62
|
+
size(): Promise<number>;
|
|
63
|
+
clear(): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export declare class RedissonScoredSortedSet implements RScoredSortedSet {
|
|
66
|
+
readonly name: string;
|
|
67
|
+
constructor(name: string);
|
|
68
|
+
private k;
|
|
69
|
+
add(score: number, value: string): Promise<boolean>;
|
|
70
|
+
addAll(members: Array<{
|
|
71
|
+
score: number;
|
|
72
|
+
value: string;
|
|
73
|
+
}>): Promise<number>;
|
|
74
|
+
remove(...values: string[]): Promise<number>;
|
|
75
|
+
rank(value: string): Promise<number | null>;
|
|
76
|
+
score(value: string): Promise<number | null>;
|
|
77
|
+
valueRange(start: number, stop: number): Promise<string[]>;
|
|
78
|
+
valueRangeByScore(min: number, max: number): Promise<string[]>;
|
|
79
|
+
size(): Promise<number>;
|
|
80
|
+
clear(): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
export declare class RedissonTopic implements RTopic {
|
|
83
|
+
readonly name: string;
|
|
84
|
+
constructor(name: string);
|
|
85
|
+
publish(message: string): Promise<number>;
|
|
86
|
+
addListener(listener: (message: string) => void): Promise<() => Promise<void>>;
|
|
87
|
+
}
|
|
88
|
+
export declare class RedissonRateLimiter implements RRateLimiter {
|
|
89
|
+
readonly name: string;
|
|
90
|
+
constructor(name: string);
|
|
91
|
+
private k;
|
|
92
|
+
trySetRate(rate: number, rateIntervalMs: number): Promise<boolean>;
|
|
93
|
+
tryAcquire(permits?: number): Promise<boolean>;
|
|
94
|
+
availablePermits(): Promise<number>;
|
|
95
|
+
}
|
|
96
|
+
export declare class RedissonBitSet implements RBitSet {
|
|
97
|
+
readonly name: string;
|
|
98
|
+
constructor(name: string);
|
|
99
|
+
private k;
|
|
100
|
+
get(bitIndex: number): Promise<boolean>;
|
|
101
|
+
set(bitIndex: number, value?: boolean): Promise<boolean>;
|
|
102
|
+
clear(bitIndex?: number): Promise<void>;
|
|
103
|
+
cardinality(): Promise<number>;
|
|
104
|
+
size(): Promise<number>;
|
|
105
|
+
}
|
|
106
|
+
export declare class RedissonQueue implements RQueue {
|
|
107
|
+
readonly name: string;
|
|
108
|
+
constructor(name: string);
|
|
109
|
+
private k;
|
|
110
|
+
offer(...values: string[]): Promise<number>;
|
|
111
|
+
poll(): Promise<string | null>;
|
|
112
|
+
peek(): Promise<string | null>;
|
|
113
|
+
size(): Promise<number>;
|
|
114
|
+
clear(): Promise<void>;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=objects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/redisson/objects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RedissonQueue = exports.RedissonBitSet = exports.RedissonRateLimiter = exports.RedissonTopic = exports.RedissonScoredSortedSet = exports.RedissonList = exports.RedissonSet = exports.RedissonMap = exports.RedissonBucket = exports.RedissonAtomicLong = void 0;
|
|
7
|
+
const Redis_1 = __importDefault(require("../Redis"));
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const CAS_LUA = `
|
|
10
|
+
local cur = redis.call('get', KEYS[1]);
|
|
11
|
+
if cur == ARGV[1] then
|
|
12
|
+
redis.call('set', KEYS[1], ARGV[2]);
|
|
13
|
+
return 1;
|
|
14
|
+
end;
|
|
15
|
+
return 0;
|
|
16
|
+
`.trim();
|
|
17
|
+
const RATE_TRY_LUA = `
|
|
18
|
+
local key = KEYS[1]
|
|
19
|
+
local now = tonumber(ARGV[1])
|
|
20
|
+
local rate = tonumber(ARGV[2])
|
|
21
|
+
local interval = tonumber(ARGV[3])
|
|
22
|
+
local permits = tonumber(ARGV[4])
|
|
23
|
+
local conf = redis.call('hmget', key, 'rate', 'interval')
|
|
24
|
+
if conf[1] then
|
|
25
|
+
rate = tonumber(conf[1])
|
|
26
|
+
interval = tonumber(conf[2])
|
|
27
|
+
end
|
|
28
|
+
local bucket = key .. ':bucket'
|
|
29
|
+
redis.call('zremrangebyscore', bucket, 0, now - interval)
|
|
30
|
+
local n = redis.call('zcard', bucket)
|
|
31
|
+
if n + permits > rate then
|
|
32
|
+
return 0
|
|
33
|
+
end
|
|
34
|
+
for i = 1, permits do
|
|
35
|
+
redis.call('zadd', bucket, now, now .. '-' .. i .. '-' .. math.random(1000000))
|
|
36
|
+
end
|
|
37
|
+
redis.call('pexpire', bucket, interval)
|
|
38
|
+
return 1
|
|
39
|
+
`.trim();
|
|
40
|
+
class RedissonAtomicLong {
|
|
41
|
+
constructor(name) {
|
|
42
|
+
this.name = name;
|
|
43
|
+
}
|
|
44
|
+
k() {
|
|
45
|
+
return `atomic:${this.name}`;
|
|
46
|
+
}
|
|
47
|
+
async get() {
|
|
48
|
+
const v = await Redis_1.default.get(this.k());
|
|
49
|
+
return v == null ? 0 : Number(v);
|
|
50
|
+
}
|
|
51
|
+
async set(value) {
|
|
52
|
+
await Redis_1.default.set(this.k(), String(value));
|
|
53
|
+
}
|
|
54
|
+
async getAndSet(value) {
|
|
55
|
+
const client = await Redis_1.default.getClient();
|
|
56
|
+
const prev = await client.getSet(Redis_1.default.key(this.k()), String(value));
|
|
57
|
+
return prev == null ? 0 : Number(prev);
|
|
58
|
+
}
|
|
59
|
+
async incrementAndGet() {
|
|
60
|
+
return Redis_1.default.incr(this.k());
|
|
61
|
+
}
|
|
62
|
+
async decrementAndGet() {
|
|
63
|
+
return Redis_1.default.decr(this.k());
|
|
64
|
+
}
|
|
65
|
+
async addAndGet(delta) {
|
|
66
|
+
const client = await Redis_1.default.getClient();
|
|
67
|
+
return client.incrBy(Redis_1.default.key(this.k()), delta);
|
|
68
|
+
}
|
|
69
|
+
async compareAndSet(expect, update) {
|
|
70
|
+
const n = await (0, utils_1.evalNumber)(CAS_LUA, [Redis_1.default.key(this.k())], [String(expect), String(update)]);
|
|
71
|
+
return n === 1;
|
|
72
|
+
}
|
|
73
|
+
async delete() {
|
|
74
|
+
return (await Redis_1.default.del(this.k())) > 0;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.RedissonAtomicLong = RedissonAtomicLong;
|
|
78
|
+
class RedissonBucket {
|
|
79
|
+
constructor(name) {
|
|
80
|
+
this.name = name;
|
|
81
|
+
}
|
|
82
|
+
k() {
|
|
83
|
+
return `bucket:${this.name}`;
|
|
84
|
+
}
|
|
85
|
+
async get() {
|
|
86
|
+
return Redis_1.default.getJSON(this.k());
|
|
87
|
+
}
|
|
88
|
+
async set(value, ttlSeconds) {
|
|
89
|
+
await Redis_1.default.setJSON(this.k(), value, ttlSeconds);
|
|
90
|
+
}
|
|
91
|
+
async getAndDelete() {
|
|
92
|
+
const v = await this.get();
|
|
93
|
+
if (v != null)
|
|
94
|
+
await Redis_1.default.del(this.k());
|
|
95
|
+
return v;
|
|
96
|
+
}
|
|
97
|
+
async compareAndSet(expect, update) {
|
|
98
|
+
const cur = await this.get();
|
|
99
|
+
if (JSON.stringify(cur) !== JSON.stringify(expect))
|
|
100
|
+
return false;
|
|
101
|
+
await this.set(update);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
async trySet(value, ttlSeconds) {
|
|
105
|
+
const ok = await Redis_1.default.setNX(this.k(), JSON.stringify(value), ttlSeconds);
|
|
106
|
+
return ok;
|
|
107
|
+
}
|
|
108
|
+
async delete() {
|
|
109
|
+
return (await Redis_1.default.del(this.k())) > 0;
|
|
110
|
+
}
|
|
111
|
+
async isExists() {
|
|
112
|
+
return Redis_1.default.exists(this.k());
|
|
113
|
+
}
|
|
114
|
+
async expire(ttlSeconds) {
|
|
115
|
+
return Redis_1.default.expire(this.k(), ttlSeconds);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.RedissonBucket = RedissonBucket;
|
|
119
|
+
class RedissonMap {
|
|
120
|
+
constructor(name) {
|
|
121
|
+
this.name = name;
|
|
122
|
+
}
|
|
123
|
+
k() {
|
|
124
|
+
return `map:${this.name}`;
|
|
125
|
+
}
|
|
126
|
+
ser(v) {
|
|
127
|
+
return typeof v === "string" ? v : JSON.stringify(v);
|
|
128
|
+
}
|
|
129
|
+
de(raw) {
|
|
130
|
+
if (raw === undefined)
|
|
131
|
+
return undefined;
|
|
132
|
+
try {
|
|
133
|
+
return JSON.parse(raw);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return raw;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async get(key) {
|
|
140
|
+
return this.de(await Redis_1.default.hGet(this.k(), key));
|
|
141
|
+
}
|
|
142
|
+
async put(key, value) {
|
|
143
|
+
await Redis_1.default.hSet(this.k(), key, this.ser(value));
|
|
144
|
+
}
|
|
145
|
+
async putAll(entries) {
|
|
146
|
+
for (const [k, v] of Object.entries(entries)) {
|
|
147
|
+
await this.put(k, v);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async remove(key) {
|
|
151
|
+
return (await Redis_1.default.hDel(this.k(), key)) > 0;
|
|
152
|
+
}
|
|
153
|
+
async containsKey(key) {
|
|
154
|
+
return (await Redis_1.default.hGet(this.k(), key)) !== undefined;
|
|
155
|
+
}
|
|
156
|
+
async readAllMap() {
|
|
157
|
+
const all = await Redis_1.default.hGetAll(this.k());
|
|
158
|
+
const out = {};
|
|
159
|
+
for (const [k, v] of Object.entries(all)) {
|
|
160
|
+
out[k] = this.de(v);
|
|
161
|
+
}
|
|
162
|
+
return out;
|
|
163
|
+
}
|
|
164
|
+
async size() {
|
|
165
|
+
const client = await Redis_1.default.getClient();
|
|
166
|
+
return client.hLen(Redis_1.default.key(this.k()));
|
|
167
|
+
}
|
|
168
|
+
async clear() {
|
|
169
|
+
await Redis_1.default.del(this.k());
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.RedissonMap = RedissonMap;
|
|
173
|
+
class RedissonSet {
|
|
174
|
+
constructor(name) {
|
|
175
|
+
this.name = name;
|
|
176
|
+
}
|
|
177
|
+
k() {
|
|
178
|
+
return `set:${this.name}`;
|
|
179
|
+
}
|
|
180
|
+
async add(...members) {
|
|
181
|
+
return Redis_1.default.sAdd(this.k(), ...members);
|
|
182
|
+
}
|
|
183
|
+
async remove(...members) {
|
|
184
|
+
return Redis_1.default.sRem(this.k(), ...members);
|
|
185
|
+
}
|
|
186
|
+
async contains(member) {
|
|
187
|
+
const client = await Redis_1.default.getClient();
|
|
188
|
+
return Number(await client.sIsMember(Redis_1.default.key(this.k()), member)) === 1;
|
|
189
|
+
}
|
|
190
|
+
async readAll() {
|
|
191
|
+
return Redis_1.default.sMembers(this.k());
|
|
192
|
+
}
|
|
193
|
+
async size() {
|
|
194
|
+
const client = await Redis_1.default.getClient();
|
|
195
|
+
return client.sCard(Redis_1.default.key(this.k()));
|
|
196
|
+
}
|
|
197
|
+
async clear() {
|
|
198
|
+
await Redis_1.default.del(this.k());
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.RedissonSet = RedissonSet;
|
|
202
|
+
class RedissonList {
|
|
203
|
+
constructor(name) {
|
|
204
|
+
this.name = name;
|
|
205
|
+
}
|
|
206
|
+
k() {
|
|
207
|
+
return `list:${this.name}`;
|
|
208
|
+
}
|
|
209
|
+
async add(...values) {
|
|
210
|
+
return Redis_1.default.rPush(this.k(), ...values);
|
|
211
|
+
}
|
|
212
|
+
async get(index) {
|
|
213
|
+
const client = await Redis_1.default.getClient();
|
|
214
|
+
return client.lIndex(Redis_1.default.key(this.k()), index);
|
|
215
|
+
}
|
|
216
|
+
async range(start, stop) {
|
|
217
|
+
return Redis_1.default.lRange(this.k(), start, stop);
|
|
218
|
+
}
|
|
219
|
+
async remove(count, value) {
|
|
220
|
+
const client = await Redis_1.default.getClient();
|
|
221
|
+
return client.lRem(Redis_1.default.key(this.k()), count, value);
|
|
222
|
+
}
|
|
223
|
+
async size() {
|
|
224
|
+
return Redis_1.default.lLen(this.k());
|
|
225
|
+
}
|
|
226
|
+
async clear() {
|
|
227
|
+
await Redis_1.default.del(this.k());
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.RedissonList = RedissonList;
|
|
231
|
+
class RedissonScoredSortedSet {
|
|
232
|
+
constructor(name) {
|
|
233
|
+
this.name = name;
|
|
234
|
+
}
|
|
235
|
+
k() {
|
|
236
|
+
return `zset:${this.name}`;
|
|
237
|
+
}
|
|
238
|
+
async add(score, value) {
|
|
239
|
+
const n = await Redis_1.default.zAdd(this.k(), [{ score, value }]);
|
|
240
|
+
return n > 0;
|
|
241
|
+
}
|
|
242
|
+
async addAll(members) {
|
|
243
|
+
return Redis_1.default.zAdd(this.k(), members);
|
|
244
|
+
}
|
|
245
|
+
async remove(...values) {
|
|
246
|
+
return Redis_1.default.zRem(this.k(), ...values);
|
|
247
|
+
}
|
|
248
|
+
async rank(value) {
|
|
249
|
+
const client = await Redis_1.default.getClient();
|
|
250
|
+
const r = await client.zRank(Redis_1.default.key(this.k()), value);
|
|
251
|
+
return r == null ? null : Number(r);
|
|
252
|
+
}
|
|
253
|
+
async score(value) {
|
|
254
|
+
return Redis_1.default.zScore(this.k(), value);
|
|
255
|
+
}
|
|
256
|
+
async valueRange(start, stop) {
|
|
257
|
+
return Redis_1.default.zRange(this.k(), start, stop);
|
|
258
|
+
}
|
|
259
|
+
async valueRangeByScore(min, max) {
|
|
260
|
+
return Redis_1.default.zRangeByScore(this.k(), min, max);
|
|
261
|
+
}
|
|
262
|
+
async size() {
|
|
263
|
+
return Redis_1.default.zCard(this.k());
|
|
264
|
+
}
|
|
265
|
+
async clear() {
|
|
266
|
+
await Redis_1.default.del(this.k());
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
exports.RedissonScoredSortedSet = RedissonScoredSortedSet;
|
|
270
|
+
class RedissonTopic {
|
|
271
|
+
constructor(name) {
|
|
272
|
+
this.name = name;
|
|
273
|
+
}
|
|
274
|
+
async publish(message) {
|
|
275
|
+
return Redis_1.default.publish(this.name, message);
|
|
276
|
+
}
|
|
277
|
+
async addListener(listener) {
|
|
278
|
+
return Redis_1.default.subscribe(this.name, (msg) => listener(msg));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
exports.RedissonTopic = RedissonTopic;
|
|
282
|
+
class RedissonRateLimiter {
|
|
283
|
+
constructor(name) {
|
|
284
|
+
this.name = name;
|
|
285
|
+
}
|
|
286
|
+
k() {
|
|
287
|
+
return `rrate:${this.name}`;
|
|
288
|
+
}
|
|
289
|
+
async trySetRate(rate, rateIntervalMs) {
|
|
290
|
+
const client = await Redis_1.default.getClient();
|
|
291
|
+
const key = Redis_1.default.key(this.k());
|
|
292
|
+
const exists = await client.exists(key);
|
|
293
|
+
if (exists)
|
|
294
|
+
return false;
|
|
295
|
+
await client.hSet(key, {
|
|
296
|
+
rate: String(rate),
|
|
297
|
+
interval: String(rateIntervalMs),
|
|
298
|
+
});
|
|
299
|
+
return true;
|
|
300
|
+
}
|
|
301
|
+
async tryAcquire(permits = 1) {
|
|
302
|
+
const client = await Redis_1.default.getClient();
|
|
303
|
+
const conf = await client.hmGet(Redis_1.default.key(this.k()), ["rate", "interval"]);
|
|
304
|
+
const rate = Number(conf[0] ?? 0);
|
|
305
|
+
const interval = Number(conf[1] ?? 1000);
|
|
306
|
+
if (rate <= 0)
|
|
307
|
+
return false;
|
|
308
|
+
const ok = await (0, utils_1.evalNumber)(RATE_TRY_LUA, [Redis_1.default.key(this.k())], [Date.now(), rate, interval, Math.max(1, permits)]);
|
|
309
|
+
return ok === 1;
|
|
310
|
+
}
|
|
311
|
+
async availablePermits() {
|
|
312
|
+
const client = await Redis_1.default.getClient();
|
|
313
|
+
const conf = await client.hmGet(Redis_1.default.key(this.k()), ["rate", "interval"]);
|
|
314
|
+
const rate = Number(conf[0] ?? 0);
|
|
315
|
+
const interval = Number(conf[1] ?? 1000);
|
|
316
|
+
if (rate <= 0)
|
|
317
|
+
return 0;
|
|
318
|
+
const bucket = Redis_1.default.key(`${this.k()}:bucket`);
|
|
319
|
+
const now = Date.now();
|
|
320
|
+
await client.zRemRangeByScore(bucket, 0, now - interval);
|
|
321
|
+
const n = await client.zCard(bucket);
|
|
322
|
+
return Math.max(0, rate - Number(n));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
exports.RedissonRateLimiter = RedissonRateLimiter;
|
|
326
|
+
class RedissonBitSet {
|
|
327
|
+
constructor(name) {
|
|
328
|
+
this.name = name;
|
|
329
|
+
}
|
|
330
|
+
k() {
|
|
331
|
+
return Redis_1.default.key(`bitset:${this.name}`);
|
|
332
|
+
}
|
|
333
|
+
async get(bitIndex) {
|
|
334
|
+
const client = await Redis_1.default.getClient();
|
|
335
|
+
return Number(await client.getBit(this.k(), bitIndex)) === 1;
|
|
336
|
+
}
|
|
337
|
+
async set(bitIndex, value = true) {
|
|
338
|
+
const client = await Redis_1.default.getClient();
|
|
339
|
+
const prev = await client.setBit(this.k(), bitIndex, value ? 1 : 0);
|
|
340
|
+
return Number(prev) === 1;
|
|
341
|
+
}
|
|
342
|
+
async clear(bitIndex) {
|
|
343
|
+
if (bitIndex === undefined) {
|
|
344
|
+
await Redis_1.default.del(`bitset:${this.name}`);
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
await this.set(bitIndex, false);
|
|
348
|
+
}
|
|
349
|
+
async cardinality() {
|
|
350
|
+
const client = await Redis_1.default.getClient();
|
|
351
|
+
return client.bitCount(this.k());
|
|
352
|
+
}
|
|
353
|
+
async size() {
|
|
354
|
+
const client = await Redis_1.default.getClient();
|
|
355
|
+
return client.strLen(this.k()) * 8;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
exports.RedissonBitSet = RedissonBitSet;
|
|
359
|
+
class RedissonQueue {
|
|
360
|
+
constructor(name) {
|
|
361
|
+
this.name = name;
|
|
362
|
+
}
|
|
363
|
+
k() {
|
|
364
|
+
return `queue:${this.name}`;
|
|
365
|
+
}
|
|
366
|
+
async offer(...values) {
|
|
367
|
+
return Redis_1.default.rPush(this.k(), ...values);
|
|
368
|
+
}
|
|
369
|
+
async poll() {
|
|
370
|
+
return Redis_1.default.lPop(this.k());
|
|
371
|
+
}
|
|
372
|
+
async peek() {
|
|
373
|
+
const arr = await Redis_1.default.lRange(this.k(), 0, 0);
|
|
374
|
+
return arr[0] ?? null;
|
|
375
|
+
}
|
|
376
|
+
async size() {
|
|
377
|
+
return Redis_1.default.lLen(this.k());
|
|
378
|
+
}
|
|
379
|
+
async clear() {
|
|
380
|
+
await Redis_1.default.del(this.k());
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
exports.RedissonQueue = RedissonQueue;
|
|
384
|
+
//# sourceMappingURL=objects.js.map
|