import { LockProviderFactory } from "@daiso-tech/core/lock";
import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
import { MemoryLockAdapter, RedisLockAdapter, SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
import { Serde } from "@daiso-tech/core/serde";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
import { Namespace } from "@daiso-tech/core/utilities";
import Redis from "ioredis"
const serde = new Serde(new SuperJsonSerdeAdapter());
const lockProviderFactory = new LockProviderFactory({
serde,
namespace: new Namespace("lock"),
adapters: {
memory: new MemoryLockAdapter(),
redis: new RedisLockAdapter(new Redis("YOUR_REDIS_CONNECTION")),
},
defaultAdapter: "memory",
});
import { LockProviderFactory } from "@daiso-tech/core/lock";
import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
import { MemoryLockAdapter, RedisLockAdapter, SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
import { Serde } from "@daiso-tech/core/serde";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
import { Namespace, TimeSpan } from "@daiso-tech/core/utilities";
import Redis from "ioredis";
const serde = new Serde(new SuperJsonSerdeAdapter());
const lockProviderFactory = new LockProviderFactory({
namespace: new Namespace("lock"),
serde,
adapters: {
memory: new MemoryLockAdapter(),
redis: new RedisLockAdapter(new Redis("YOUR_REDIS_CONNECTION")),
},
defaultAdapter: "memory",
});
// Will acquire key using the default adapter which is MemoryLockAdapter
await lockProviderFactory
.use()
.create("a")
.acquire();
// Will acquire key using the redis adapter which is RedisLockAdapter
await lockProviderFactory
.use("redis")
.create("a")
.acquire();
The
LockProviderFactory
class is immutable.IMPORT_PATH:
"@daiso-tech/core/lock"