import { SharedLockProviderFactory } from "@daiso-tech/core/shared-lock";
import { MemorySharedLockAdapter } from "@daiso-tech/core/shared-lock/memory-shared-lock-adapter";
import { RedisSharedLockAdapter } from "@daiso-tech/core/shared-lock/redis-shared-lock-adapter";
import { Serde } from "@daiso-tech/core/serde";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";
import Redis from "ioredis"
const serde = new Serde(new SuperJsonSerdeAdapter());
const lockProviderFactory = new SharedLockProviderFactory({
serde,
adapters: {
memory: new MemorySharedLockAdapter(),
redis: new RedisSharedLockAdapter(new Redis("YOUR_REDIS_CONNECTION")),
},
defaultAdapter: "memory",
});
import { SharedLockProviderFactory } from "@daiso-tech/core/shared-lock";
import { MemorySharedLockAdapter } from "@daiso-tech/core/shared-lock/memory-shared-lock-adapter";
import { RedisSharedLockAdapter } from "@daiso-tech/core/shared-lock/redis-shared-lock-adapter";
import { Serde } from "@daiso-tech/core/serde";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";
import { TimeSpan } from "@daiso-tech/core/time-span" from "@daiso-tech/core/time-span";
import Redis from "ioredis";
const serde = new Serde(new SuperJsonSerdeAdapter());
const lockProviderFactory = new SharedLockProviderFactory({
serde,
adapters: {
memory: new MemorySharedLockAdapter(),
redis: new RedisSharedLockAdapter(new Redis("YOUR_REDIS_CONNECTION")),
},
defaultAdapter: "memory",
});
// Will acquire key using the default adapter which is MemorySharedLockAdapter
await lockProviderFactory
.use()
.create("a")
.acquireWriter();
// Will acquire key using the redis adapter which is RedisSharedLockAdapter
await lockProviderFactory
.use("redis")
.create("a")
.acquireWriter();
The
SharedLockProviderFactoryclass is immutable.IMPORT_PATH:
"@daiso-tech/core/shared-lock"