基于Redis实现分布式锁

本文通过一个实际案例,展示了如何在多进程系统中利用Redis实现用户信息操作的分布式锁,确保并发情况下的操作有序性。同时,文章指出该方法存在的问题,如主从切换可能导致的锁丢失,并推荐了Redis官方的分布式锁方案以及一个优化的Python实现库。
摘要由CSDN通过智能技术生成
分布式锁的基本功能:
1.同一时刻只能存在一个锁
2.需要解决意外死锁问题,也就是锁能超时自动释放
3.支持主动释放锁

分布式锁解决什么问题:

多进程并发执行任务时,需要保证任务的有序性或者唯一性

准备:
redis版本>=2.6
redis是主从+sentinel模式(为了高可用)

原理:
redis2.6之后,SET命令支持超时和key存在检查,这是一个原子操作

获取锁并设置超时时间:
SET key value [EX seconds] [PX milliseconds] [NX|XX]

删除锁:
DEL key

EX:单位是秒
PX:单位是毫秒
NX:如果key存在,返回nil(失败),不存在返回ok
XX:如果key存在,返回ok,不存在返回nil(失败)

基本操作如图示:

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值