klg-redlock

klg-redlock

一个基于 redis 的分布式锁

Quick Start

准备好 redis client

let client = redis.createClient('redis://localhost:6379')

排队锁

const bufferLock = new Redlock({
  client,
  retryConfig: {
    retryCount: Math.floor(1000 * 60 * 5 / 400), // 重试次数 这里需要重试一分钟
    retryDelay: 400   // 重试间隔
  }
})

await bufferLock.using(async (lock) => {
    // code
}, {ttl: 1000 * 30, resource: 'key'})

相同 key 的操作会排队执行,遇到冲突会重试,默认重试总时长是 1 分钟,注意重试的实现是非公平的,有可能某个操作会一直无法执行,直至超时。

排他锁

const bufferLock = new Redlock({
  client,
  retryConfig: {
    retryCount: 0
  }
})

await bufferLock.using(async (lock) => {
    // code
}, {ttl: 1000 * 30, resource: 'key'})

相同 key 的操作具有排他性,遇到冲突会 throw 一个 Error 对象, message 为‘系统繁忙,请稍后再试’

Test

$ npm i
$ npm test

Repository

https://github.com/kaolalicai/klg-redlock


上一篇:klg-request
下一篇:klg-mq-koa

相关推荐

  • tslint-config-klg

    tslint standard for klg 考拉 typescript 编码 标准 编辑 tslint.json 加入以下内容即可 Repository https://githu...

    7 个月前
  • redlock

    A node.js redlock implementation for distributed redis locks npm version(https://badge.fury.io/js/r...

    1 年前
  • klg-retry

    基于retry封装的工具 klgretry klg retry :基于retry封装的工具 QuickStart Test Repository h...

    7 个月前
  • klg-request

    http request util klgrequest http request util QuickStart Install Usage 参考 src...

    7 个月前
  • klg-mq-koa

    rabbitmq koa middleware klgmqkoa rabbitmq 中间件 for koa,方便把异步接口快速接入 MQ。 Koa 服务与 MQ 服务的连接方式 消息...

    7 个月前
  • klg-mq

    message queue klgmq rabbitmq 连接工具 QuickStart Test 没有做 mq mock,所以需要 mq 服务,开启 mq 服务,然后...

    7 个月前
  • klg-logger

    log 工具,基于 tracer,简单,可以显示 log 的位置 klglogger log 工具,基于 tracer,简单,可以显示 log 的位置 配置 3.0 版本开始,将不对 ...

    7 个月前
  • klg-date

    date util klgdate date util QuickStart 安装 引入 获取凌晨时间 获取2天前的凌晨时间 获取指定日期2天前的凌晨时间 其...

    7 个月前

官方社区

扫码加入 JavaScript 社区