DCS实践干货:使用Redis实现分布式锁
2018-06-28 10:31
459 查看
场景介绍
很多互联网场景(如商品秒杀,论坛回帖盖楼等),需要用加锁的方式,以对某种资源进行顺序访问控制。如果应用服务集群部署,则涉及到对分布式应用加锁。当前分布式加锁主要有三种方式:(磁盘)数据库、缓存数据库、Zookeeper。接下里让我们一起看看加锁实践过程。
加锁实现
测试代码
假设20个线程对10台mate10手机进行抢购:
运行结果
配置好实际的缓存实例连接地址、端口与连接密码,运行代码,得到以下结果:
不加锁场景
如果注释掉加锁代码,变成无锁情况,则抢购无序。
注释加锁代码后的运行结果,可以看出处理过程是无序的:
总的来说,使用DCS服务中Redis类型的缓存实例实现分布式加锁,有几大优势:
1、加锁操作简单,使用SET、GET、DEL等几条简单命令即可实现锁的获取和释放。
2、性能优越,缓存数据的读写优于磁盘数据库与Zookeeper。
3、可靠性强,DCS有主备和集群实例类型,避免单点故障。
以上代码实现仅展示使用DCS服务进行加锁访问的便捷性,具体技术实现需要考虑死锁、锁的检查等情况,欢迎点击分布式缓存服务DCS了解更多。
很多互联网场景(如商品秒杀,论坛回帖盖楼等),需要用加锁的方式,以对某种资源进行顺序访问控制。如果应用服务集群部署,则涉及到对分布式应用加锁。当前分布式加锁主要有三种方式:(磁盘)数据库、缓存数据库、Zookeeper。接下里让我们一起看看加锁实践过程。
加锁实现
测试代码
假设20个线程对10台mate10手机进行抢购:
运行结果
配置好实际的缓存实例连接地址、端口与连接密码,运行代码,得到以下结果:
不加锁场景
如果注释掉加锁代码,变成无锁情况,则抢购无序。
注释加锁代码后的运行结果,可以看出处理过程是无序的:
总的来说,使用DCS服务中Redis类型的缓存实例实现分布式加锁,有几大优势:
1、加锁操作简单,使用SET、GET、DEL等几条简单命令即可实现锁的获取和释放。
2、性能优越,缓存数据的读写优于磁盘数据库与Zookeeper。
3、可靠性强,DCS有主备和集群实例类型,避免单点故障。
以上代码实现仅展示使用DCS服务进行加锁访问的便捷性,具体技术实现需要考虑死锁、锁的检查等情况,欢迎点击分布式缓存服务DCS了解更多。
相关文章推荐
- DCS实践干货:使用Redis实现分布式锁
- 分布式中使用Redis实现Session共享(二)
- 分布式中使用 Redis 实现 Session 共享(下)
- 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
- redis中使用java脚本实现分布式锁
- (转)分布式中使用Redis实现Session共享(二)
- 使用 Redis 实现分布式系统轻量级协调技术
- 分布式中使用Redis实现Session共享
- 基于Redis实现分布式锁,Redisson使用及源码分析
- 使用 Redis 实现分布式系统轻量级协调技术
- 分布式中使用Redis实现Session共享
- Redis实践:使用Pub/Sub实现远程Trace或Log信息跟踪监控
- 使用 Redis 实现分布式系统轻量级协调技术
- redis中使用java脚本实现分布式锁
- redis中使用java脚本实现分布式锁
- 分布式中使用Redis实现Session共享(二)
- 基于Redis实现分布式锁-Redisson使用及源码分析
- 分布式中使用Redis实现Session共享(一)
- API接口非幂等性问题及使用redis实现简单的分布式锁
- (转)分布式中使用Redis实现Session共享(一)