Redisson实现分布式锁及其底层原理解析
目前主流的开源解决方案有jedis,redission,lettuce三种解决方案,其中jedis是同步的方案,现在包括spring-data也已经不再内置使用了,替换成了lettuce。redission和lettuce都是基于netty的也就是说他俩都是异步非阻塞的,但是他们有什么区别呢?其实在使用语法上面有一些区别,redission对结果做了一层包装,通过包装类来进行一些额外的操作来达到异步操作,并且redission提供了额外的分部署锁功能。 Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比, 功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离, 从而让使用者能够将精力更集中地放在处理业务逻辑上。 Jedis使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。 Redisson使用非阻塞的I/O和基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作。 一