内容简介:以往在项目中涉及到分布式锁时,都是结合redisTemplate采用类原生的方式编写,代码量不少,还容易出现锁死的情况,近来无意间在看到某篇文章中发现了redisson,如获珍宝,工具谱中又多了一个利器(公众号回复关键字“工具”)。分布式锁的关键点在于加锁与解锁其间能不能保持连续性,redisson为我们提供了一种比较优雅简单的方式:在分布式锁的基础上还提供了
以往在项目中涉及到分布式锁时,都是结合redisTemplate采用类原生的方式编写,代码量不少,还容易出现锁死的情况,近来无意间在看到某篇文章中发现了redisson,如获珍宝,工具谱中又多了一个利器(公众号回复关键字“工具”)。
分布式锁的关键点在于加锁与解锁其间能不能保持连续性,redisson为我们提供了一种比较优雅简单的方式:
在分布式锁的基础上还提供了 联锁(MultiLock)
, 读写锁(ReadWriteLock)
, 公平锁(FairLock)
, 红锁(RedLock)
, 信号量(Semaphore)
, 可过期性信号量(PermitExpirableSemaphore)
和 闭锁(CountDownLatch)
这些实际当中对多线程高并发应用至关重要的基本部件。正是通过实现基于 Redis 的高阶应用方案,使Redisson成为构建分布式系统的重要工具。
题图 from unsplash
Redisson基于NIO的Netty框架,同其他Redis Java客户端有着很大的区别,相比之下其他客户端提供的功能还仅仅停留在作为数据库驱动层面上,比如仅针对Redis提供连接方式,发送命令和处理返回结果等。
基于 Java 实用 工具 包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。而其它redis java客户端如果要使用一些高层次的应用则只能依靠使用者自行实现,不太友好。
Redisson实现分布式锁仅仅是一个方面的应用,其它还有很多便捷的用法。本篇仅是提供一个引子,更多详细文档介绍参考项目介绍的wiki内容。
扩展阅读:
Redis的三个框架: Jedis,Redisson,Lettuce
Jedis 地址:https://github.com/xetorthio/jedis,是Redis的Java实现客户端,提供了比较全面的Redis命令的支持。 SpringBoot1.x系列中默认采用的是jedis。
Redisson 官网地址:https://redisson.org/,实现了分布式和可扩展的Java数据结构。
Lettuce 官网地址:https://lettuce.io/,高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。 SpringBoot2.x系列中抛弃了原有的jedis,默认采用lettuce。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Memcached 1.6 发布,高性能分布式缓存系统
- Memcached 1.5.10 发布,高性能分布式缓存系统
- Memcached 1.5.11 发布,高性能分布式缓存系统
- 高性能分布式存储在核心数据库的应用
- Memcached 1.5.12 发布,高性能分布式缓存系统
- Ray 0.6.1 发布,高性能分布式执行框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
有限与无限的游戏
[美]詹姆斯·卡斯 / 马小悟、余倩 / 电子工业出版社 / 2013-10 / 35.00元
在这本书中,詹姆斯·卡斯向我们展示了世界上两种类型的「游戏」:「有限的游戏」和「无限的游戏」。 有限的游戏,其目的在于赢得胜利;无限的游戏,却旨在让游戏永远进行下去。有限的游戏在边界内玩,无限的游戏玩的就是边界。有限的游戏具有一个确定的开始和结束,拥有特定的赢家,规则的存在就是为了保证游戏会结束。无限的游戏既没有确定的开始和结束,也没有赢家,它的目的在于将更多的人带入到游戏本身中来,从而延续......一起来看看 《有限与无限的游戏》 这本书的介绍吧!