{"_id":"redlock","_rev":"4529398","name":"redlock","description":"A node.js redlock implementation for distributed redis locks","dist-tags":{"latest":"5.0.0-beta.2"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"time":{"modified":"2026-04-09T13:33:10.000Z","created":"2015-01-09T03:51:14.242Z","5.0.0-beta.2":"2022-03-06T21:35:33.083Z","5.0.0-beta2":"2022-03-06T21:22:01.187Z","5.0.0-beta.1":"2021-11-26T18:53:51.762Z","5.0.0-beta.0":"2021-11-26T18:35:07.577Z","5.0.0-alpha.0":"2021-07-25T06:33:19.242Z","4.2.0":"2020-10-04T17:45:38.046Z","4.1.0":"2019-11-01T20:27:09.986Z","4.0.0":"2019-06-14T03:23:38.153Z","3.1.2":"2018-03-18T16:21:12.513Z","3.1.1":"2018-02-16T17:29:52.129Z","3.1.0":"2017-09-21T17:12:58.762Z","2.1.2":"2017-06-21T21:47:35.424Z","3.0.0":"2017-05-23T22:12:55.389Z","2.1.1":"2017-05-15T01:54:04.772Z","2.1.0":"2016-11-15T20:40:27.374Z","2.0.2":"2016-11-13T18:42:17.938Z","2.0.1":"2016-09-27T23:42:45.744Z","2.0.0":"2016-03-11T02:13:48.382Z","1.0.1":"2016-03-07T09:09:52.915Z","1.0.0":"2015-09-11T03:00:37.595Z","0.5.0":"2015-09-10T18:05:48.792Z","0.4.1":"2015-09-02T17:54:24.148Z","0.4.0":"2015-07-22T06:32:44.426Z","0.3.1":"2015-07-20T19:55:04.355Z","0.3.0":"2015-07-19T22:39:26.738Z","0.2.0":"2015-06-07T04:21:29.570Z","0.1.0":"2015-01-09T03:51:14.242Z"},"users":{},"author":{"name":"Mike Marcacci","email":"mike.marcacci@gmail.com"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"versions":{"5.0.0-beta.2":{"name":"redlock","version":"5.0.0-beta.2","description":"A node.js redlock implementation for distributed redis locks","license":"MIT","author":{"name":"Mike Marcacci","email":"mike.marcacci@gmail.com"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"homepage":"https://github.com/mike-marcacci/node-redlock#readme","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"keywords":["nodejs","redlock","distributed","lock","redis"],"engines":{"node":">=12"},"browserslist":"node >= 12","ava":{"nodeArguments":["--experimental-specifier-resolution=node"]},"devDependencies":{"@types/ioredis":"^4.28.8","@types/node":"^17.0.21","@typescript-eslint/eslint-plugin":"^5.13.0","@typescript-eslint/parser":"^5.13.0","ava":"^4.1.0","eslint":"^8.10.0","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","ioredis":"^4.28.5","nodemon":"^2.0.15","prettier":"^2.5.1","typescript":"~4.6.2"},"scripts":{"format":"prettier --list-different --write '**/*.{json,yml,md,ts}'","lint":"prettier -c '**/*.{json,yml,md,ts}' && eslint src --ext ts","build":"rm -f dist/**/*.{js,js.map,d.ts} && tsc && tsc -p tsconfig.cjs.json","build:development":"rm -f dist/**/*.{js,js.map,d.ts} && tsc --watch","test":"cd dist/esm && ava --verbose *.test.js","test:development":"cd dist/esm && ava --verbose --watch *.test.js","prepare":"yarn build","prepublishOnly":"yarn install && yarn lint && yarn build"},"dependencies":{"node-abort-controller":"^3.0.1"},"type":"module","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Mike Marcacci\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n","_id":"redlock@5.0.0-beta.2","dist":{"shasum":"a629c07e07d001c0fdd9f2efa614144c4416fe44","size":21407,"noattachment":false,"key":"/redlock/-/redlock-5.0.0-beta.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-5.0.0-beta.2.tgz"},"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_5.0.0-beta.2_1646602532835_0.7027641584828732"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-03-06T21:35:36.152Z","publish_time":1646602533083,"_cnpm_publish_time":1646602533083},"5.0.0-beta2":{"name":"redlock","version":"5.0.0-beta2","description":"A node.js redlock implementation for distributed redis locks","license":"MIT","author":{"name":"Mike Marcacci","email":"mike.marcacci@gmail.com"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"homepage":"https://github.com/mike-marcacci/node-redlock#readme","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"keywords":["nodejs","redlock","distributed","lock","redis"],"engines":{"node":">=12"},"browserslist":"node >= 12","ava":{"nodeArguments":["--experimental-specifier-resolution=node"]},"devDependencies":{"@types/ioredis":"^4.28.8","@types/node":"^17.0.21","@typescript-eslint/eslint-plugin":"^5.13.0","@typescript-eslint/parser":"^5.13.0","ava":"^4.1.0","eslint":"^8.10.0","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","ioredis":"^4.28.5","nodemon":"^2.0.15","prettier":"^2.5.1","typescript":"~4.6.2"},"scripts":{"format":"prettier --list-different --write '**/*.{json,yml,md,ts}'","lint":"prettier -c '**/*.{json,yml,md,ts}' && eslint src --ext ts","build":"rm -f dist/**/*.{js,js.map,d.ts} && tsc && tsc -p tsconfig.cjs.json","build:development":"rm -f dist/**/*.{js,js.map,d.ts} && tsc --watch","test":"cd dist/esm && ava --verbose *.test.js","test:development":"cd dist/esm && ava --verbose --watch *.test.js","prepare":"yarn build","prepublishOnly":"yarn install && yarn lint && yarn build"},"dependencies":{"node-abort-controller":"^3.0.1"},"type":"module","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Mike Marcacci\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n","_id":"redlock@5.0.0-beta2","dist":{"shasum":"ee9862ae7cb788f912008f07c1b25f8199da1cca","size":21403,"noattachment":false,"key":"/redlock/-/redlock-5.0.0-beta2.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-5.0.0-beta2.tgz"},"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_5.0.0-beta2_1646601720821_0.41134798136960415"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-03-06T21:22:05.104Z","publish_time":1646601721187,"_cnpm_publish_time":1646601721187},"5.0.0-beta.1":{"name":"redlock","version":"5.0.0-beta.1","description":"A node.js redlock implementation for distributed redis locks","license":"MIT","author":{"name":"Mike Marcacci","email":"mike.marcacci@gmail.com"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"homepage":"https://github.com/mike-marcacci/node-redlock#readme","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"keywords":["nodejs","redlock","distributed","lock","redis"],"engines":{"node":">=12"},"browserslist":"node >= 12","ava":{"nodeArguments":["--experimental-specifier-resolution=node"]},"devDependencies":{"@types/ioredis":"^4.28.1","@types/node":"^16.11.10","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","ava":"^3.13.0","eslint":"^8.3.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","ioredis":"^4.28.1","nodemon":"^2.0.15","prettier":"^2.5.0","typescript":"~4.5.2"},"scripts":{"format":"prettier --list-different --write '**/*.{json,yml,md,ts}'","lint":"prettier -c '**/*.{json,yml,md,ts}' && eslint src --ext ts","build":"rm -f dist/**/*.{js,js.map,d.ts} && tsc && tsc -p tsconfig.cjs.json","build:development":"rm -f dist/**/*.{js,js.map,d.ts} && tsc --watch","test":"cd dist/esm && ava --verbose *.test.js","test:development":"cd dist/esm && ava --verbose --watch *.test.js","prepare":"yarn build","prepublishOnly":"yarn install && yarn lint && yarn build"},"dependencies":{"node-abort-controller":"^3.0.1"},"type":"module","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Mike Marcacci\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n","_id":"redlock@5.0.0-beta.1","dist":{"shasum":"241eb892ece105a461eb36717f21ad8b20ce8016","size":18399,"noattachment":false,"key":"/redlock/-/redlock-5.0.0-beta.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-5.0.0-beta.1.tgz"},"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_5.0.0-beta.1_1637952831612_0.33976304699433113"},"_hasShrinkwrap":false,"publish_time":1637952831762,"_cnpm_publish_time":1637952831762,"_cnpmcore_publish_time":"2021-12-16T18:20:11.804Z"},"5.0.0-beta.0":{"name":"redlock","version":"5.0.0-beta.0","description":"A node.js redlock implementation for distributed redis locks","license":"MIT","author":{"name":"Mike Marcacci","email":"mike.marcacci@gmail.com"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"homepage":"https://github.com/mike-marcacci/node-redlock#readme","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/index.d.ts","exports":"./dist/index.js","keywords":["nodejs","redlock","distributed","lock","redis"],"engines":{"node":">=12"},"browserslist":"node >= 12","ava":{"nodeArguments":["--experimental-specifier-resolution=node"]},"devDependencies":{"@types/ioredis":"^4.28.1","@types/node":"^16.11.10","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","ava":"^3.13.0","eslint":"^8.3.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","ioredis":"^4.28.1","nodemon":"^2.0.15","prettier":"^2.5.0","typescript":"~4.5.2"},"scripts":{"format":"prettier --list-different --write '**/*.{json,yml,md,ts}'","lint":"prettier -c '**/*.{json,yml,md,ts}' && eslint src --ext ts","build":"rm -f dist/**/*.{js,js.map,d.ts} && tsc && tsc -p tsconfig.cjs.json","build:development":"rm -f dist/**/*.{js,js.map,d.ts} && tsc --watch","test":"cd dist/esm && ava --verbose *.test.js","test:development":"cd dist/esm && ava --verbose --watch *.test.js","prepare":"yarn build","prepublishOnly":"yarn install && yarn lint && yarn build"},"dependencies":{"node-abort-controller":"^3.0.1"},"type":"module","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Mike Marcacci\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n","_id":"redlock@5.0.0-beta.0","dist":{"shasum":"af4924b4a1b8002c83a005e06e9118b0e4628f36","size":14937,"noattachment":false,"key":"/redlock/-/redlock-5.0.0-beta.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-5.0.0-beta.0.tgz"},"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_5.0.0-beta.0_1637951707430_0.4726189924868742"},"_hasShrinkwrap":false,"publish_time":1637951707577,"_cnpm_publish_time":1637951707577,"_cnpmcore_publish_time":"2021-12-16T18:20:12.019Z"},"5.0.0-alpha.0":{"name":"redlock","version":"5.0.0-alpha.0","description":"A node.js redlock implementation for distributed redis locks","license":"MIT","author":{"name":"Mike Marcacci","email":"mike.marcacci@gmail.com"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"homepage":"https://github.com/mike-marcacci/node-redlock#readme","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"main":"dist/index.js","keywords":["nodejs","redlock","distributed","lock","redis"],"engines":{"node":">=12"},"browserslist":"node >= 12","ava":{"nodeArguments":["--experimental-specifier-resolution=node"]},"devDependencies":{"@types/ioredis":"^4.26.6","@types/node":"^16.4.2","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","ava":"^3.13.0","eslint":"^7.31.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.2.0","ioredis":"^4.19.2","nodemon":"^2.0.6","prettier":"^2.2.1","typescript":"^4.1.2"},"scripts":{"format":"prettier --list-different --write '**/*.{json,yml,md,ts}'","lint":"prettier -c '**/*.{json,yml,md,ts}' && eslint src --ext ts","build":"rm -rf dist && tsc","build:development":"rm -rf dist && tsc --watch","test":"ava --verbose dist/*.test.js","test:development":"ava --verbose --watch dist/*.test.js","prepare":"yarn build","prepublishOnly":"yarn install && yarn lint && yarn build"},"dependencies":{"node-abort-controller":"^2.0.0"},"type":"module","exports":"./dist/index.js","licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Mike Marcacci\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n","_id":"redlock@5.0.0-alpha.0","dist":{"shasum":"c02616e44ba6633a930da43aaafd1ffa659eb7c7","size":12937,"noattachment":false,"key":"/redlock/-/redlock-5.0.0-alpha.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-5.0.0-alpha.0.tgz"},"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_5.0.0-alpha.0_1627194799099_0.06935778512432544"},"_hasShrinkwrap":false,"publish_time":1627194799242,"_cnpm_publish_time":1627194799242,"_cnpmcore_publish_time":"2021-12-16T18:20:12.294Z"},"4.2.0":{"name":"redlock","version":"4.2.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^4.2.0","coveralls":"^3.1.0","ioredis":"^4.18.0","istanbul":"^0.4.2","mocha":"^8.1.3","redis":"^3.0.2"},"dependencies":{"bluebird":"^3.7.2"},"engines":{"node":">=8.0.0"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"870778cd520f9649e80f74fa755ee0f12519c683","_id":"redlock@4.2.0","_nodeVersion":"14.11.0","_npmVersion":"6.14.8","dist":{"shasum":"c26590768559afd5fff76aa1133c94b411ff4f5f","size":11692,"noattachment":false,"key":"/redlock/-/redlock-4.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-4.2.0.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_4.2.0_1601833537949_0.04642152046855208"},"_hasShrinkwrap":false,"publish_time":1601833538046,"_cnpm_publish_time":1601833538046,"_cnpmcore_publish_time":"2021-12-16T18:20:12.561Z"},"4.1.0":{"name":"redlock","version":"4.1.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^4.2.0","coveralls":"^3.0.4","ioredis":"^4.10.0","istanbul":"^0.4.2","mocha":"^6.1.4","redis":"^2.7.1"},"dependencies":{"bluebird":"^3.3.3"},"engines":{"node":">=8.0.0"},"config":{"blanket":{"pattern":["redlock.js"]}},"licenseText":"The MIT License (MIT)\n\nCopyright (c) 2015 Mike Marcacci\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n","_id":"redlock@4.1.0","dist":{"shasum":"2c8d6a348d1b8a10af61574fa3664eced003babc","size":10460,"noattachment":false,"key":"/redlock/-/redlock-4.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-4.1.0.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_4.1.0_1572640029795_0.28216521092504077"},"_hasShrinkwrap":false,"publish_time":1572640029986,"_cnpm_publish_time":1572640029986,"_cnpmcore_publish_time":"2021-12-16T18:20:12.788Z"},"4.0.0":{"name":"redlock","version":"4.0.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^4.2.0","coveralls":"^3.0.4","ioredis":"^4.10.0","istanbul":"^0.4.2","mocha":"^6.1.4","redis":"^2.7.1"},"dependencies":{"bluebird":"^3.3.3"},"engines":{"node":">=8.0.0"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"75c077222a514901e66e697ccb99ac169a0df387","_id":"redlock@4.0.0","_nodeVersion":"12.3.1","_npmVersion":"6.9.0","dist":{"shasum":"cae41c8addf57ff87b79510253495b0fa8dd46c6","size":10332,"noattachment":false,"key":"/redlock/-/redlock-4.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-4.0.0.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_4.0.0_1560482617874_0.35648489192398314"},"_hasShrinkwrap":false,"publish_time":1560482618153,"_cnpm_publish_time":1560482618153,"_cnpmcore_publish_time":"2021-12-16T18:20:12.996Z"},"3.1.2":{"name":"redlock","version":"3.1.2","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^3.0.0","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.7.1"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"479e3bc62876f47e1172f143b379fb80f8b86b9e","_id":"redlock@3.1.2","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"27c82534da8548027aa8d61084a08078ae74ed36","size":9142,"noattachment":false,"key":"/redlock/-/redlock-3.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-3.1.2.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_3.1.2_1521390072432_0.3548008331716501"},"_hasShrinkwrap":false,"publish_time":1521390072513,"_cnpm_publish_time":1521390072513,"_cnpmcore_publish_time":"2021-12-16T18:20:13.589Z"},"3.1.1":{"name":"redlock","version":"3.1.1","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^3.0.0","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.7.1"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"f8c696a07dfe0ded923ee3d05fceb6ec559c7d01","_id":"redlock@3.1.1","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"3e2ddaf2b9ccd085fd6482f16a0e9d4d7c3f5a5f","size":9105,"noattachment":false,"key":"/redlock/-/redlock-3.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-3.1.1.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock_3.1.1_1518802192059_0.040416318841416166"},"_hasShrinkwrap":false,"publish_time":1518802192129,"_cnpm_publish_time":1518802192129,"_cnpmcore_publish_time":"2021-12-16T18:20:13.773Z"},"3.1.0":{"name":"redlock","version":"3.1.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^3.0.0","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.7.1"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"9a846d44c3f8f4219462c33f4cf26970f5972687","_id":"redlock@3.1.0","_npmVersion":"5.4.2","_nodeVersion":"8.1.3","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"9044980202f1bb30550a6ef12ad67dd9bf0c11d4","size":9059,"noattachment":false,"key":"/redlock/-/redlock-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-3.1.0.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock-3.1.0.tgz_1506013977767_0.3072493460495025"},"directories":{},"publish_time":1506013978762,"_hasShrinkwrap":false,"_cnpm_publish_time":1506013978762,"_cnpmcore_publish_time":"2021-12-16T18:20:13.997Z"},"2.1.2":{"name":"redlock","version":"2.1.2","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^1.15.1","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.4.2"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"f4c88187f6438eca86deb01910bf517c74dfe9e1","_id":"redlock@2.1.2","_npmVersion":"5.0.3","_nodeVersion":"8.1.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"bcdb6abe48acb3c3f597ff77e5256f15da2a9f46","size":8863,"noattachment":false,"key":"/redlock/-/redlock-2.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-2.1.2.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock-2.1.2.tgz_1498081655240_0.8869457351975143"},"directories":{},"publish_time":1498081655424,"_hasShrinkwrap":false,"_cnpm_publish_time":1498081655424,"_cnpmcore_publish_time":"2021-12-16T18:20:14.266Z"},"3.0.0":{"name":"redlock","version":"3.0.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^3.0.0","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.7.1"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"d2b01af9999e4b9895d629a369ec091ce5f5f966","_id":"redlock@3.0.0","_shasum":"01d5d99ee5a19c54557d984d656c1a1ddcce0e8e","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"01d5d99ee5a19c54557d984d656c1a1ddcce0e8e","size":9079,"noattachment":false,"key":"/redlock/-/redlock-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-3.0.0.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redlock-3.0.0.tgz_1495577575287_0.7550904485397041"},"directories":{},"publish_time":1495577575389,"_hasShrinkwrap":false,"_cnpm_publish_time":1495577575389,"_cnpmcore_publish_time":"2021-12-16T18:20:14.449Z"},"2.1.1":{"name":"redlock","version":"2.1.1","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^1.15.1","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.4.2"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"860886443d882fb8c6006385fd8520c9bcaa5de3","_id":"redlock@2.1.1","_shasum":"223ec5fffc2d751c5f822c3885a94f33ec2e8380","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"223ec5fffc2d751c5f822c3885a94f33ec2e8380","size":9070,"noattachment":false,"key":"/redlock/-/redlock-2.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-2.1.1.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/redlock-2.1.1.tgz_1494813242018_0.8404757434036583"},"directories":{},"publish_time":1494813244772,"_hasShrinkwrap":false,"deprecated":"possible critical bug, see https://github.com/mike-marcacci/node-redlock/issues/31","_cnpm_publish_time":1494813244772,"_cnpmcore_publish_time":"2021-12-16T18:20:14.666Z"},"2.1.0":{"name":"redlock","version":"2.1.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^1.15.1","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.4.2"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"95e364b44ffde08f25313ebc58c6f1b2906e6297","_id":"redlock@2.1.0","_shasum":"f00ddff6b74069dfbf4d2fd11ed8104475bfef76","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"f00ddff6b74069dfbf4d2fd11ed8104475bfef76","size":8897,"noattachment":false,"key":"/redlock/-/redlock-2.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-2.1.0.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/redlock-2.1.0.tgz_1479242427149_0.29023985913954675"},"directories":{},"publish_time":1479242427374,"_hasShrinkwrap":false,"_cnpm_publish_time":1479242427374,"_cnpmcore_publish_time":"2021-12-16T18:20:14.937Z"},"2.0.2":{"name":"redlock","version":"2.0.2","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^1.15.1","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.4.2"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"5b2dd583a3165b3834e0c5c82c015abae6dac915","_id":"redlock@2.0.2","_shasum":"19e033331389cfe7be5806a221c4b48a549c480d","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"19e033331389cfe7be5806a221c4b48a549c480d","size":8674,"noattachment":false,"key":"/redlock/-/redlock-2.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-2.0.2.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/redlock-2.0.2.tgz_1479062536118_0.8574573546648026"},"directories":{},"publish_time":1479062537938,"_hasShrinkwrap":false,"_cnpm_publish_time":1479062537938,"_cnpmcore_publish_time":"2021-12-16T18:20:15.158Z"},"2.0.1":{"name":"redlock","version":"2.0.1","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^1.15.1","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.4.2"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"8a7eeb5913ffb775e8a7aab19fd7b023197f2ed1","_id":"redlock@2.0.1","_shasum":"907a392ee66c7fae5167cc5c9eff22ccf5e59755","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"907a392ee66c7fae5167cc5c9eff22ccf5e59755","size":8629,"noattachment":false,"key":"/redlock/-/redlock-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-2.0.1.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/redlock-2.0.1.tgz_1475019765494_0.8793211304582655"},"directories":{},"publish_time":1475019765744,"_hasShrinkwrap":false,"_cnpm_publish_time":1475019765744,"_cnpmcore_publish_time":"2021-12-16T18:20:15.389Z"},"2.0.0":{"name":"redlock","version":"2.0.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^1.15.1","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.4.2"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"aecb5fdf60c37e80788c0bd88cc7f436535f7429","_id":"redlock@2.0.0","_shasum":"c9b22e837a95a2bd551bf4971d42fdf9732e58ae","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"c9b22e837a95a2bd551bf4971d42fdf9732e58ae","size":7940,"noattachment":false,"key":"/redlock/-/redlock-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-2.0.0.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/redlock-2.0.0.tgz_1457662427873_0.6653503200504929"},"directories":{},"publish_time":1457662428382,"_hasShrinkwrap":false,"_cnpm_publish_time":1457662428382,"_cnpmcore_publish_time":"2021-12-16T18:20:15.626Z"},"1.0.1":{"name":"redlock","version":"1.0.1","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.5.0","coveralls":"^2.11.8","ioredis":"^1.15.1","istanbul":"^0.4.2","mocha":"^2.4.5","redis":"^2.4.2"},"dependencies":{"bluebird":"^3.3.3"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"8ce3b6808f59e0b67c87e5727a081f1d82a74369","_id":"redlock@1.0.1","_shasum":"853bbf1fac1d4df858c96eb0b36128f05bc42724","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.1.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"dist":{"shasum":"853bbf1fac1d4df858c96eb0b36128f05bc42724","size":7352,"noattachment":false,"key":"/redlock/-/redlock-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-1.0.1.tgz"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/redlock-1.0.1.tgz_1457341791487_0.5167541415430605"},"directories":{},"publish_time":1457341792915,"_hasShrinkwrap":false,"_cnpm_publish_time":1457341792915,"_cnpmcore_publish_time":"2021-12-16T18:20:16.076Z"},"1.0.0":{"name":"redlock","version":"1.0.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.0.0","coveralls":"^2.11.2","ioredis":"^1.6.1","istanbul":"^0.3.14","mocha":"^2.2.5","redis":"^0.12.1"},"dependencies":{"bluebird":"^2.9.34"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"8707253a3fd1471269c082e2875daeecd9e00201","_id":"redlock@1.0.0","_shasum":"60d1e9d62fce51c18b5567f8d6ace25a2a147266","_from":".","_npmVersion":"2.14.2","_nodeVersion":"4.0.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"60d1e9d62fce51c18b5567f8d6ace25a2a147266","size":7353,"noattachment":false,"key":"/redlock/-/redlock-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-1.0.0.tgz"},"directories":{},"publish_time":1441940437595,"_hasShrinkwrap":false,"_cnpm_publish_time":1441940437595,"_cnpmcore_publish_time":"2021-12-16T18:20:16.375Z"},"0.5.0":{"name":"redlock","version":"0.5.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.0.0","coveralls":"^2.11.2","ioredis":"^1.6.1","istanbul":"^0.3.14","mocha":"^2.2.5","redis":"^0.12.1"},"dependencies":{"bluebird":"^2.9.34"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"06a57bce2a91ca2eb200d3d39686bfe7fb16ca09","_id":"redlock@0.5.0","_shasum":"3bcc4ebf9d24ff8e9435bb506b52fbc898abbb57","_from":".","_npmVersion":"2.14.2","_nodeVersion":"4.0.0","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"3bcc4ebf9d24ff8e9435bb506b52fbc898abbb57","size":7286,"noattachment":false,"key":"/redlock/-/redlock-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-0.5.0.tgz"},"directories":{},"publish_time":1441908348792,"_hasShrinkwrap":false,"_cnpm_publish_time":1441908348792,"_cnpmcore_publish_time":"2021-12-16T18:20:16.603Z"},"0.4.1":{"name":"redlock","version":"0.4.1","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"git+https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.0.0","coveralls":"^2.11.2","ioredis":"^1.6.1","istanbul":"^0.3.14","mocha":"^2.2.5","redis":"^0.12.1"},"dependencies":{"bluebird":"^2.9.34"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"40b40988a5dd8d842acd02ff69648e23a7b9a6a2","_id":"redlock@0.4.1","_shasum":"8562e7f67eeaf5dc8f8235b6013fd0dc6145fb7b","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"8562e7f67eeaf5dc8f8235b6013fd0dc6145fb7b","size":6916,"noattachment":false,"key":"/redlock/-/redlock-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-0.4.1.tgz"},"directories":{},"publish_time":1441216464148,"_hasShrinkwrap":false,"_cnpm_publish_time":1441216464148,"_cnpmcore_publish_time":"2021-12-16T18:20:16.817Z"},"0.4.0":{"name":"redlock","version":"0.4.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.0.0","coveralls":"^2.11.2","ioredis":"^1.6.1","istanbul":"^0.3.14","mocha":"^2.2.5","redis":"^0.12.1"},"dependencies":{"bluebird":"^2.9.34"},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"d23f3878bdfdd3d5ad7afdf42f587b523fda2489","_id":"redlock@0.4.0","_shasum":"efc12e10680a832d027c15fbbab9e269cd348c57","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"efc12e10680a832d027c15fbbab9e269cd348c57","size":6778,"noattachment":false,"key":"/redlock/-/redlock-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-0.4.0.tgz"},"directories":{},"publish_time":1437546764426,"_hasShrinkwrap":false,"_cnpm_publish_time":1437546764426,"_cnpmcore_publish_time":"2021-12-16T18:20:17.050Z"},"0.3.1":{"name":"redlock","version":"0.3.1","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.0.0","coveralls":"^2.11.2","ioredis":"^1.6.1","istanbul":"^0.3.14","mocha":"^2.2.5","redis":"^0.12.1"},"dependencies":{},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"57a2f44a5898b109ea7df104f3091c2047df5322","_id":"redlock@0.3.1","_shasum":"02577f08490894742c3b34d68a8fce4989365a7b","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"02577f08490894742c3b34d68a8fce4989365a7b","size":5801,"noattachment":false,"key":"/redlock/-/redlock-0.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-0.3.1.tgz"},"directories":{},"publish_time":1437422104355,"_hasShrinkwrap":false,"_cnpm_publish_time":1437422104355,"_cnpmcore_publish_time":"2021-12-16T18:20:17.266Z"},"0.3.0":{"name":"redlock","version":"0.3.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.0.0","coveralls":"^2.11.2","ioredis":"^1.6.1","istanbul":"^0.3.14","mocha":"^2.2.5","redis":"^0.12.1"},"dependencies":{},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"91e11d68ef4071b272077f61fe95f69690281188","_id":"redlock@0.3.0","_shasum":"52644036d4d5f10d95f0d18c749437c6b39c2d6b","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"52644036d4d5f10d95f0d18c749437c6b39c2d6b","size":5784,"noattachment":false,"key":"/redlock/-/redlock-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-0.3.0.tgz"},"directories":{},"publish_time":1437345566738,"_hasShrinkwrap":false,"_cnpm_publish_time":1437345566738,"_cnpmcore_publish_time":"2021-12-16T18:20:17.469Z"},"0.2.0":{"name":"redlock","version":"0.2.0","description":"A node.js redlock implementation for distributed redis locks","main":"redlock.js","scripts":{"test":"istanbul cover mocha","test-ci":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls"},"repository":{"type":"git","url":"https://github.com/mike-marcacci/node-redlock.git"},"keywords":["nodejs","iojs","redlock","distributed","lock","redis"],"author":{"name":"Mike Marcacci"},"license":"MIT","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"homepage":"https://github.com/mike-marcacci/node-redlock","devDependencies":{"chai":"^3.0.0","coveralls":"^2.11.2","istanbul":"^0.3.14","mocha":"^2.2.5","redis":"^0.12.1"},"dependencies":{},"config":{"blanket":{"pattern":["redlock.js"]}},"gitHead":"1731b5b69cb20c6af2653e8f4a6cc3d71bcd89d1","_id":"redlock@0.2.0","_shasum":"b98d885b6db384f03b5637d34e7da63a4d73d629","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"b98d885b6db384f03b5637d34e7da63a4d73d629","size":5501,"noattachment":false,"key":"/redlock/-/redlock-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-0.2.0.tgz"},"directories":{},"publish_time":1433650889570,"_hasShrinkwrap":false,"_cnpm_publish_time":1433650889570,"_cnpmcore_publish_time":"2021-12-16T18:20:17.720Z"},"0.1.0":{"name":"redlock","version":"0.1.0","description":"A simple distributed locking mechanism based on redis.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/internalfx/redlock"},"author":{"name":"Bryan Morris"},"license":"MIT","bugs":{"url":"https://github.com/internalfx/redlock/issues"},"homepage":"https://github.com/internalfx/redlock","dependencies":{"coffee-script":"^1.8.0","lodash":"^2.4.1"},"gitHead":"7f28b3b5da1eb1bfb38028c65295f67f68a4f85e","_id":"redlock@0.1.0","_shasum":"e17965042c8b5c445e05c817daebb4c2bee2308a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"internalfx","email":"bmorris@arthurandrew.com"},"maintainers":[{"name":"mike-marcacci","email":"mike.marcacci@gmail.com"}],"dist":{"shasum":"e17965042c8b5c445e05c817daebb4c2bee2308a","size":2485,"noattachment":false,"key":"/redlock/-/redlock-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/redlock/download/redlock-0.1.0.tgz"},"directories":{},"publish_time":1420775474242,"_hasShrinkwrap":false,"_cnpm_publish_time":1420775474242,"_cnpmcore_publish_time":"2021-12-16T18:20:17.941Z"}},"readme":"[![Continuous Integration](https://github.com/mike-marcacci/node-redlock/workflows/Continuous%20Integration/badge.svg)](https://github.com/mike-marcacci/node-redlock/actions/workflows/ci.yml?query=branch%3Amain++)\n[![Current Version](https://badgen.net/npm/v/redlock)](https://npm.im/redlock)\n[![Supported Node.js Versions](https://badgen.net/npm/node/redlock)](https://npm.im/redlock)\n\n# Redlock\n\nThis is a node.js implementation of the [redlock](http://redis.io/topics/distlock) algorithm for distributed redis locks. It provides strong guarantees in both single-redis and multi-redis environments, and provides fault tolerance through use of multiple independent redis instances or clusters.\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Error Handling](#error-handling)\n- [API](#api)\n- [Guidance](#guidance)\n\n## Installation\n\n```bash\nnpm install --save redlock\n```\n\n## Configuration\n\nRedlock is designed to use [ioredis](https://github.com/luin/ioredis) to keep its client connections and handle the cluster protocols.\n\nA redlock object is instantiated with an array of at least one redis client and an optional `options` object. Properties of the Redlock object should NOT be changed after it is first used, as doing so could have unintended consequences for live locks.\n\n```ts\nimport Client from \"ioredis\";\nimport Redlock from \"./redlock\";\n\nconst redisA = new Client({ host: \"a.redis.example.com\" });\nconst redisB = new Client({ host: \"b.redis.example.com\" });\nconst redisC = new Client({ host: \"c.redis.example.com\" });\n\nconst redlock = new Redlock(\n  // You should have one client for each independent redis node\n  // or cluster.\n  [redisA, redisB, redisC],\n  {\n    // The expected clock drift; for more details see:\n    // http://redis.io/topics/distlock\n    driftFactor: 0.01, // multiplied by lock ttl to determine drift time\n\n    // The max number of times Redlock will attempt to lock a resource\n    // before erroring.\n    retryCount: 10,\n\n    // the time in ms between attempts\n    retryDelay: 200, // time in ms\n\n    // the max time in ms randomly added to retries\n    // to improve performance under high contention\n    // see https://www.awsarchitectureblog.com/2015/03/backoff.html\n    retryJitter: 200, // time in ms\n\n    // The minimum remaining time on a lock before an extension is automatically\n    // attempted with the `using` API.\n    automaticExtensionThreshold: 500, // time in ms\n  }\n);\n```\n\n## Usage\n\nThe `using` method wraps and executes a routine in the context of an auto-extending lock, returning a promise of the routine's value. In the case that auto-extension fails, an AbortSignal will be updated to indicate that abortion of the routine is in order, and to pass along the encountered error.\n\nThe first parameter is an array of resources to lock; the second is the requested lock duration in milliseconds, which MUST NOT contain values after the decimal.\n\n```ts\nawait redlock.using([senderId, recipientId], 5000, async (signal) => {\n  // Do something...\n  await something();\n\n  // Make sure any attempted lock extension has not failed.\n  if (signal.aborted) {\n    throw signal.error;\n  }\n\n  // Do something else...\n  await somethingElse();\n});\n```\n\nAlternatively, locks can be acquired and released directly:\n\n```ts\n// Acquire a lock.\nlet lock = await redlock.acquire([\"a\"], 5000);\ntry {\n  // Do something...\n  await something();\n\n  // Extend the lock.\n  lock = await lock.extend(5000);\n\n  // Do something else...\n  await somethingElse();\n} finally {\n  // Release the lock.\n  await lock.release();\n}\n```\n\n### Use in CommonJS Projects\n\nBeginning in version 5, this package is published primarily as an ECMAScript module. While this is universally accepted as the format of the future, there remain some interoperability quirks when used in CommonJS node applications. For major version 5, this package **also** distributes a copy transpiled to CommonJS. Please ensure that your project either uses either the ECMAScript or CommonJS version **but NOT both**.\n\nThe `Redlock` class is published as the \"default\" export, and can be imported with:\n\n```ts\nconst { default: Redlock } = require(\"redlock\");\n```\n\nIn version 6, this package will stop distributing the CommonJS version.\n\n## Error Handling\n\nBecause redlock is designed for high availability, it does not care if a minority of redis instances/clusters fail at an operation.\n\nHowever, it can be helpful to monitor and log such cases. Redlock emits an \"error\" event whenever it encounters an error, even if the error is ignored in its normal operation.\n\n```ts\nredlock.on(\"error\", (error) => {\n  // Ignore cases where a resource is explicitly marked as locked on a client.\n  if (error instanceof ResourceLockedError) {\n    return;\n  }\n\n  // Log all other errors.\n  console.error(error);\n});\n```\n\nAdditionally, a per-attempt and per-client stats (including errors) are made available on the `attempt` propert of both `Lock` and `ExecutionError` classes.\n\n## API\n\nPlease view the (very concise) source code or TypeScript definitions for a detailed breakdown of the API.\n\n## Guidance\n\n### Contributing\n\nPlease see [`CONTRIBUTING.md`](./CONTRIBUTING.md) for information on developing, running, and testing this library.\n\n### High-Availability Recommendations\n\n- Use at least 3 independent servers or clusters\n- Use an odd number of independent redis **_servers_** for most installations\n- Use an odd number of independent redis **_clusters_** for massive installations\n- When possible, distribute redis nodes across different physical machines\n\n### Using Cluster/Sentinel\n\n**_Please make sure to use a client with built-in cluster support, such as [ioredis](https://github.com/luin/ioredis)._**\n\nIt is completely possible to use a _single_ redis cluster or sentinal configuration by passing one preconfigured client to redlock. While you do gain high availability and vastly increased throughput under this scheme, the failure modes are a bit different, and it becomes theoretically possible that a lock is acquired twice:\n\nAssume you are using eventually-consistent redis replication, and you acquire a lock for a resource. Immediately after acquiring your lock, the redis master for that shard crashes. Redis does its thing and fails over to the slave which hasn't yet synced your lock. If another process attempts to acquire a lock for the same resource, it will succeed!\n\nThis is why redlock allows you to specify multiple independent nodes/clusters: by requiring consensus between them, we can safely take out or fail-over a minority of nodes without invalidating active locks.\n\nTo learn more about the the algorithm, check out the [redis distlock page](http://redis.io/topics/distlock).\n\nAlso note that when acquiring a lock on multiple resources, commands are executed in a single call to redis. Redis clusters require that all keys exist in a command belong to the same node. **If you are using a redis cluster or clusters and need to lock multiple resources together you MUST use [redis hash tags](https://redis.io/topics/cluster-spec#keys-hash-tags) (ie. use `ignored{considered}ignored{ignored}` notation in resource strings) to ensure that all keys resolve to the same node.** Chosing what data to include must be done thoughtfully, because representing the same conceptual resource in more than one way defeats the purpose of acquiring a lock. Accordingly, it's generally wise to use a single very generic prefix to ensure that ALL lock keys resolve to the same node, such as `{redlock}my_resource`. This is the most straightforward strategy and may be appropriate when the cluster has additional purposes. However, when locks will always naturally share a common attribute (for example, an organization/tenant ID), this may be used for better key distribution and cluster utilization. You can also acheive ideal utilization by completely omiting a hash tag if you do _not_ need to lock multiple resources at the same time.\n\n### How do I check if something is locked?\n\nThe purpose of redlock is to provide exclusivity guarantees on a resource over a duration of time, and is not designed to report the ownership status of a resource. For example, if you are on the smaller side of a network partition you will fail to acquire a lock, but you don't know if the lock exists on the other side; all you know is that you can't guarantee exclusivity on yours. This is further complicated by retry behavior, and even moreso when acquiring a lock on more than one resource.\n\nThat said, for many tasks it's sufficient to attempt a lock with `retryCount=0`, and treat a failure as the resource being \"locked\" or (more correctly) \"unavailable\".\n\nNote that with `retryCount=-1` there will be unlimited retries until the lock is aquired.\n","_attachments":{},"homepage":"https://github.com/mike-marcacci/node-redlock#readme","bugs":{"url":"https://github.com/mike-marcacci/node-redlock/issues"},"license":"MIT"}