小编这次要给大家分享的是详解redis如何实现分布式锁,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
前言
系统的不断扩大,分布式锁是最基本的保障。与单机的多线程不一样的是,分布式跨多个机器。线程的共享变量无法跨机器。
为了保证一个在高并发存场景下只能被同一个线程操作,java并发处理提供ReentrantLock或Synchronized进行互斥控制。但是这仅仅对单机环境有效。我们实现分布式锁大概通过三种方式。
- redis实现分布式锁
- 数据库实现分布式锁
- zk实现分布式锁
今天我们介绍通过redis实现分布式锁。实际上这三种和java对比看属于一类。都是属于程序外部锁。
原理剖析
- 上述三种分布式锁都是通过各自为依据对各个请求进行上锁,解锁从而控制放行还是拒绝。redis锁是基于其提供的setnx命令。
- setnx当且仅当key不存在。若给定key已经存在,则setnx不做任何动作。setnx是一个原子性操作。
- 和数据库分布式相比,因为redis内存轻量。所以redis分布式锁性能更好
实现
原理很简单。结合springboot项目我们实现一套通过注解形式对接口进行库存上锁案例进行理解
编写注解
我们编写注解。方便我们在接口上添加注解提供拦截信息
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface StockLock {
String prefix() default "";
String delimiter() default ":";
}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机Redis如何实现分布式锁详解
数据库2024-04-02
详解redis如何实现分布式锁
数据库2024-04-02
Redis实现分布式锁详解
数据库2023-04-09
redis实现分布式锁实例详解
数据库2024-04-02
Redis分布式锁如何实现
数据库2024-04-02
Redis如何实现分布式锁
数据库2024-04-02
详解基于redis实现分布式锁
数据库2024-04-02
一文详解如何使用Redis实现分布式锁
数据库2024-04-02
SpringBoot+Redis如何实现分布式锁
数据库2023-06-16
Redis中如何实现分布式锁
数据库2023-06-16
redis分布式锁的实现原理详解
数据库2024-04-02
Redis——》实现分布式锁
数据库2023-09-03
Redis实现分布式锁
数据库2023-08-16
Redis中的分布式锁如何实现
数据库2024-04-02
如何使用Redis实现分布式锁
数据库2024-04-02
redis如何实现分布式共享锁
数据库2023-09-04
Redis分布式锁是如何实现的
数据库2024-04-02
使用Redis如何实现分布式锁
数据库2024-04-02
Redis分布式锁如何实现续期
数据库2024-04-02
Redis如何实现分布式锁功能
数据库2023-11-07
咦!没有更多了?去看看其它编程学习网 内容吧