首页 > 数据库 >redis分布锁

redis分布锁

时间:2023-12-20 22:14:26浏览次数:34  
标签:redis name lock Redis 分布 time 分布式

1.什么是redis分布式锁

Redis分布式锁是一种利用Redis实现的锁机制,用于在分布式系统中保护共享资源的访问。它利用Redis的原子性操作和过期时间设置来实现互斥访问。

在分布式环境中,多个进程或线程可能同时访问共享资源,如果没有合适的机制来保护共享资源,就会导致数据不一致或竞争条件的发生。Redis分布式锁通过在Redis中设置一个唯一的锁标识来确保在同一时间只有一个进程或线程可以获取到锁,其他进程或线程则需要等待。

2.如何实现?

lock_name = 'my_lock'
process_id = os.getpid()
redis_cli = RedisUtils().client
# 获取锁 def acquire_lock(lock_name, acquire_timeout=10, lock_timeout=600): end_time = time.time() + acquire_timeout while time.time() < end_time: if redis_cli.set(lock_name, process_id, ex=lock_timeout, nx=True): return True time.sleep(0.001) return False # 释放锁 def release_lock(lock_name):
  if redis_cli.get(lock_name) == process_id:
    redis_cli.delete(lock_name)

注意点:
  • 锁过期(设置较长的过期时间)
  • 释放了别人的锁(加入当前线程唯一的识别)


进阶:如何用Redis实现分布式锁_redis分布式锁-CSDN博客

标签:redis,name,lock,Redis,分布,time,分布式
From: https://www.cnblogs.com/ltyc/p/17917693.html

相关文章

  • Redis7 BigKey
    1、MoreKey1.1、大数据模拟往redis插入大量数据进行测试for((i=1;i<=100*10000;i++));doecho"setk$iv$i">>/tmp/redisTest.txt;done;通过redis提供的管道--pipe命令插入100W大批量数据cat/tmp/redisTest.txt|/opt/redis-7.0.0/src/redis-cli-h127.0.0.1-p6379-a......
  • Redis缓存
    Redis(RemoteDictionaryServer)是一个开源的高性能键值对(key-value)存储系统,常被用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希表、列表、集合和有序集合。 为什么要用Redis?使用Redis有多个原因,包括:高性能:Redis是基于内存存储计算的,其性能速度远超MySQL等数......
  • Redis异常问题分析黄金一分钟
    Redis异常问题分析黄金一分钟背景同事发现一个环境redis比较卡顿,导致业务比较难以开展.问题是下午出现的.六点左右找到我这边.想着帮忙看看,问题其实没有定位完全,仅是发现了一个可能的点.所以想记录一下,备查步骤登录redis进行查看处理的过程:1.infomemor......
  • Seata:打造行业首个分布式事务产品
    作者:季敏,阿里云分布式事务产品负责人、Seata开源项目创始人微服务架构下数据一致性的挑战微服务开发的痛点在2019年,我们基于DubboEcosystemMeetup,收集了2000多份关于“在微服务架构,哪些核心问题是开发者最关注的痛点?”的调研问卷。最终分布式事务问题在调研中占比最大,约占......
  • MongoDB、Elasticsearch、Redis、HBase应用场景分析
    1.MongoDB一个基于分布式文件存储的数据库系统,由C++编写,旨在为Web应用提供高速、可扩展、高性能的数据存储解决方案。MongoDB采用了文档型数据库模型,即数据以文档的形式存储,而文档是由键值对组成的。MongoDB的名称来自Hadoop创始人DougCutting的宠物狗Mongo。  应用场景......
  • Seata:打造行业首个分布式事务产品
    作者:季敏,阿里云分布式事务产品负责人、Seata开源项目创始人微服务架构下数据一致性的挑战微服务开发的痛点在2019年,我们基于DubboEcosystemMeetup,收集了2000多份关于“在微服务架构,哪些核心问题是开发者最关注的痛点?”的调研问卷。最终分布式事务问题在调研中占比最大......
  • Redis全文搜索教程之创建索引并关联源数据
    Redis全文搜索是依赖于Redis官方提供的RediSearch来实现的。RediSearch提供了一种简单快速的方法对hash或者json类型数据的任何字段建立二级索引,然后就可以对被索引的hash或者json类型数据字段进行搜索和聚合操作。这里我们把被索引的hash或者json类型数据叫做......
  • seata分布式事务不生效
    Fegin调用使用了Fallback降级或抛出的异常被全局处理解决:1.通过GlobalTransactionContext.reload(RootContext.getXID()).rollback()进行手动回滚==============服务A@ServicepublicclassServiceAImplimplementsIServiceA{privatestaticfinalLoggerlog=......
  • 《分布式中间件核心原理与RocketMQ最佳实践》
    ......
  • DeepSpeed分布式训练
    一、DeepSpeed总纲官方文档:DeepSpeed官方英文文档cpoy下来的原版DeepSpeed模型的训练是使用DeeSpeed引擎完成的DeepSpeed引擎可以包装任何torch.nn.module类型的模型二、训练1、通过deepspeed.initialize初始化#deepspeed.initialize确保分布式数据并行或混合精度......