VonaJS分布式锁,如何实现高效锁定?
摘要:分布式锁 VonaJS 基于Redlock提供了直观、易用的分布式锁 创建分布式锁 比如,在模块 demo-student 中创建分布式锁 1. Cli命令 $ vona :create:bean meta redlock --module
分布式锁
VonaJS 基于Redlock提供了直观、易用的分布式锁
创建分布式锁
比如,在模块 demo-student 中创建分布式锁
1. Cli命令
$ vona :create:bean meta redlock --module=demo-student
2. 菜单命令
右键菜单 - [模块路径]: `Vona Meta/Redlock`
分布式锁定义
export type TypeRedlockLockResource = never;
export type TypeRedlockLockIsolateResource = never;
@Meta()
export class MetaRedlock extends BeanRedlockBase<TypeRedlockLockResource, TypeRedlockLockIsolateResource> {}
TypeRedlockLockResource: 定义lock方法使用的锁资源
TypeRedlockLockIsolateResource: 定义lockIsolate方法使用的锁资源
定义锁资源
当我们使用分布式锁时,需要指定对应的锁资源。比如,为lock方法定义锁资源name:
- export type TypeRedlockLockResource = never;
+ export type TypeRedlockLockResource = 'name';
使用分布式锁
class ControllerStudent {
async test() {
const res = await this.scope.redlock.lock('name', async () => {
// do something in lock
return 'some result';
});
}
}
redlock.lock:传入锁资源name
lock/lockIsolate
VonaJS 提供了两个锁方法: lock/lockIsolate。
