
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
锁的应用在软件开发项目中是非常常见的一个功能,而今天我们就通过案例分析来了解一下,软件开发分布式锁应用与实现方法。
一、实现分布式锁的要求
互斥性。在任何时候,当且仅有一个客户端能够持有锁。
不能有死锁。持有锁的客户端崩溃后,后续客户端能够加锁。
容错性。大部分Redis或者ZooKeeper节点能够正常运行。
加锁解锁相同。加锁的客户端和解锁的客户端必须为同一个客户端,不能让其他的解锁了。
二、Redis实现分布式锁的常用命令
1.SETNXkeyval
当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。
2.expirekeytimeout
为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁。
3.deletekey
删除key,此处用来解锁使用。
4.HEXISTSkeyfield
当key中存储着field的时候返回1,如果key或者field至少有一个不存在返回0。
5.HINCRBYkeyfieldincrement
将存储在key中的哈希(Hash)对象中的指定字段field的值加上增量increment。如果键key不存在,一个保存了哈希对象的新建将被创建。如果字段field不存在,在进行当前操作前,其将被创建,且对应的值被置为0。返回值是增量之后的值。
三、Redisson
Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。