阿古达芝麻开门 - 博客园

Redis分布式锁实现方案

在Java中,同一个JVM里面可以用synchronized关键字和ReentrantLock可重入锁解决多线程对同一资源的并发访问控制,但是随着分布式的快速发展,本地的加锁往往不能满足我们的需要,在我们的分布式环境中上面加锁的方法就会失去作用。

 

现在Spring Boot 分布式锁开箱即用,支持主流的 Redis、Zookeeper 中间件,另外还支持 JDBC(https://docs.spring.io/spring-integration/docs/5.3.1.RELEASE/reference/html/redis.html#redis-lock-registry),只需要添加三个依赖:

  • spring-boot-starter-data-redis
  • spring-boot-starter-integration
  • spring-integration-redis

然后只需要注入RedisLockRegistry,在需要分布式锁的场景:加锁-->处理业务逻辑-->释放锁(请注意甄别是否加的是同一把锁,特别是分布式部署应用时,确保能按顺序获取锁)。主要代码如下:

 

 

测试:5秒内分别访问下面两个连接,不同的请求按顺序获取了锁,按顺序处理了业务

http://localhost:8080/redis/lock1?key=goods_id1

http://localhost:8080/redis/lock2?key=goods_id1

 

 

关注公众号“一米源码”并发送“Lock”获取示例代码

posted @   阿古达芝麻开门  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示