RedLock 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
RedLock 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
RedLock 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Python
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 小编辑
适用人群 未知
收录时间 2015-02-17

软件简介

RedLock 是一个使用 Python 和 Redis 实现的分布式锁。实现了来自 @antirez 的 RedLock 算法。

示例代码:

from redlock import RedLock
# By default, if no redis connection details are 
# provided, RedLock uses redis://127.0.0.1:6379/0
lock =  RedLock("distributed_lock")
lock.acquire()
do_something()
lock.release()

from redlock import RedLock
with RedLock("distributed_lock"):
    do_something()

from redlock import RedLock
with RedLock("distributed_lock", 
              connection_details=[
                {host='xxx.xxx.xxx.xxx', port=6379, db=0},
                {host='xxx.xxx.xxx.xxx', port=6379, db=0},
                {host='xxx.xxx.xxx.xxx', port=6379, db=0},
                {host='xxx.xxx.xxx.xxx', port=6379, db=0},
              ]
            ):
    do_something()
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表于云计算专区
2019/04/17 11:21

RedLock

## **Redlock实现** 假设有N个Redis master。这些节点**完全互相独立,不存在主从复制或者其他集群协调机制**。我们确保将在N个实例上使用与在Redis单实例下相同方法获取和释放锁。现在我们假设有5个Redis master节点,同时我们需要在5台服务器上面运行这些Redis实例,这样保证他们不会同时都宕掉。 为了取到锁,客户端应该执行以下操作: - 获取当前Unix时间,以毫秒为单位。 - 依次尝试从5个实例,使用相同的key和**具有唯一性...

0
0
发表于服务端专区
2019/04/15 10:05

RedLock

Redis分布式锁: 1.采用单实例的正确实现 获取锁: SET name value NX PX 30000 value必须在所有获取锁的客户端里面唯一. 这个值用来保证可以安全的释放锁 释放锁: redis.eval(传入lua脚本) 不使用del进行删除(删除时,因为超时已经自动释放了锁,所以删除了其他人的锁) 2.为什么基于故障切换的方案不够好? 2.1 客户端A 在master节点获取到了锁 2.2 master在把A 创建的key同步给slave之前宕机了. 2.3 slave变成了master节点 2.4 客户...

0
0
发表了博客
2019/10/07 19:01

什么是 RedLock

  Redis 官方站这篇文章提出了一种权威的基于 Redis 实现分布式锁的方式名叫 Redlock,此种方式比原先的单节点的方法更安全。它可以保证以下特性:   安全特性:互斥访问,即永远只有一个 client 能拿到锁   避免死锁:最终 client 都可能拿到锁,不会出现死锁的情况,即使原本锁住某资源的 client crash 了或者出现了网络分区 容错性:只要大部分 Redis 节点存活就可以正常提供服务 怎么在单节点上实现分布式锁?   S...

0
0
发表了博客
2018/08/31 17:08

redlock 学习笔记

最近开始学习redlock算法,打开redis官网翻到 redlock文章地址,然后找一个翻译好的版本和自己做的翻译对照,这个对照的翻译版本是 redis.cn团队进行的翻译。 在看到 MIN_VALIDITY这一段时,我先自己按原文翻译了一遍。 ......But if the first key was set at worst at time T1 (the time we sample before contacting the first server) and the last key was set at worst at time T2 (the time we obtained the reply from...

0
0
发表了博客
2019/05/30 15:00

redlock算法及其问题

背景 redlock算法是为了解决什么问题呢? 在单redis实例实现分布式锁时,可能会出现线程A设置完锁后,master挂掉,slave提升为master,因为异步复制的特性,线程A设置的锁丢失了,这时候线程B设置锁也能够成功,导致线程A和B同时拥有锁 然后redis作者提出了redlock算法 算法描述 获得当前时间(ms) 首先设置一个锁有效时间valid_time,也就是超过这个时间后锁自动释放,使用相同的key和value对所有redis实例进行设置,每次链接...

0
0
2020/09/28 15:28

redlock 分布式Redis锁

维基百科上对锁是这样解释的: ``` 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足 ``` 通俗的说,就是强制为同步访问,即一次只有一个线层操作。 凡事基本上都是双面的,锁可以在一定程度上保证数据的一致性,但是锁也意味着维护和使用的复杂性,当然也伴随着性能的损耗。 文本的讨论过程是 + 无锁 + 单机锁 + 分布式锁 ##### 无锁编程 因为锁的复杂性,所以在尽...

0
0
发表于AI & 大数据专区
2018/04/04 22:08

Redis RedLock 完美的分布式锁么?

上周花了点时间研究了 Redis 的作者提的 RedLock 的算法来实现一个分布式锁,在官方的文档最下面发现了这样一句话。 Analysis of RedLock Martin Kleppmann analyzed Redlock here. I disagree with the analysis and posted my reply to his analysis here. 突然觉得事情好像没有那么简单,就点进去看了看。仔细读了读文章,发现了一个不得了的世界。于是静下心来研究了 Martin 对 RedLock 的批评,还有 RedLock 作者 antirez ...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
7 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部