An open API service indexing awesome lists of open source software.

https://github.com/wenye123/redis-lock

基于redis的分布式锁和信号量
https://github.com/wenye123/redis-lock

lock redis-lock typescript

Last synced: 3 months ago
JSON representation

基于redis的分布式锁和信号量

Awesome Lists containing this project

README

        

# redis-lock

[![Build Status](https://travis-ci.org/wenye123/redis-lock.svg?branch=master)](https://travis-ci.org/wenye123/redis-lock)
[![Coverage Status](https://coveralls.io/repos/github/wenye123/redis-lock/badge.svg)](https://coveralls.io/github/wenye123/redis-lock)
[![npm](https://img.shields.io/npm/v/@wenye123/redis-lock)](https://www.npmjs.com/package/@wenye123/redis-lock)
[![npm](https://img.shields.io/npm/dw/@wenye123/redis-lock)](https://www.npmjs.com/package/@wenye123/redis-lock)

简单的 redis 分布式锁

## 安装

```bash
npm i -S @wenye123/redis-lock
```

## 使用例子

```javascript
import redisLock from "@wenye123/redis-lock";
import Redis from "ioredis";

const redis = new Redis({
host: "127.0.0.1",
port: 6379,
});

const rlock = new redisLock({
client: redis,
keyPrefix: "bm:",
});

const lockName = "tlock";
// 获取锁标志,null则表示获取失败
const identifier = await rlock.acquireLock(lockName);
// 释放锁
await rlock.releaseLock(lockName, identifier as string);

const sename = "tsename";
// 获取信号量
const identifier = await rlock.acquireSemaphore(sename, 1);
// 刷新信号量
await rlock.refreshSemaphore(sename, identifier as string);
// 释放信号量
await rlock.releaseSemaphore(sename, identifier as string);

```