美文网首页
Java中间件 - Redisson(上) - 简介

Java中间件 - Redisson(上) - 简介

作者: ElliotG | 来源:发表于2020-07-22 09:19 被阅读0次

1. 什么是Redisson

Redisson官网的介绍如下:
Redis Java Client with features of In-Memory Data Grid

Redisson是一款具有诸多高性能功能的综合类开源中间件。
Redisson设计的初衷是让实施者对Redis的关注进行分离,可以将更多的精力放在处理业务逻辑上。
Redisson提供的功能特性及其在项目中所起的作用远大于原生Redis所提供的各种功能。

 

2. Redisson的功能特性

  • 多种连接方式
    同步,异步,异步流,管道流

  • 数据序列化
    多种数据序列化方式

  • 集合数据分片
    在集群模式下,Redisson为单个Redis集合类型提(eg: Set, Map)供了自动分片功能。
    单个集合被拆分后,均匀地分布在整个集群里,而不是挤在单一的一个节点里。

  • 分布式对象
    Object Bucket(通用对象桶), Binary Stream(二进制流), Geospatial Bucket(地理空间对象), AtomicLong, AtomicDouble, Bloom Filter(布隆过滤器) ...

  • 分布式集合
    Map, Multimap, Set, SortedSet, List, Queue, 双端,堵塞,延迟队列 ...

  • 分布式锁
    Reentrant Lock(可重入锁), Fair Lock(公平锁), ReadWrite Lock(读写锁), CountDownLatch(闭锁), Semaphore(信号量) ...

  • 分布式服务
    Remote Service(分布式远程服务), Scheduler Service(分布式调度任务服务), MapReduce, Executor Service ...

 

3. Redisson的一些典型应用场景

  • 布隆过滤器(Bloom Filter)与去重
    布隆过滤器用来过滤已经存在的元素。保证集合中的元素是唯一的,即去重。
    也许有人会说,去重不是很简单。只要判断元素是否存在就好了。
    是的,此话没错。
    但是传统的判断元素是否存在例如contains()方法是基于单机内存模式的,这在高并发大数据量的场景下,是不合适的。
    为此,Redisson提供了高性能的数据组件Bloom Filter。
    布隆过滤器的优缺点
    优点:
    不需要开辟额外的内存来存储元素,节省了存储空间。
    缺点:
    由于是采用哈希和下标算法,存在一定的误判率。
    多个元素共享下标,元素无法进行删除操作,存在误删的情况。

  • 消息通信
    Redisson也可以实现类似于消息中间件(RabbitMQ)所提供的消息队列功能,从而实现业务服务模块的异步通信与解耦。
    Redisson分布式对象中有一个组件叫做“基于发布订阅模式的主题”,该组件可以实现消息通信的功能。
    生产者发布主题,消费者只需要订阅响应的主题即可实现自动监听消费主题和消息,从而执行响应的业务逻辑。
    生产者-->发布主题
    消费者-->监听接收消息-->执行业务逻辑

  • 延迟队列
    所谓延迟队列,是指生产者将消息发送至队列之后,并不会立即被消费者监听消费,而是等待一定的过期时间(存活时间)TTL,当TTL时间一到,消息才会被真正地监听消费。
    Redisson采用阻塞队列的方式来进行消息的暂存,缓冲作用,从而起到消息的延迟。

  • 分布式锁
    分布式锁是用于控制高并发场景下多线程对共享资源的并发访问。
    实现分布式锁有3中方式:
    a. 基于数据库级别的乐观锁,悲观锁实现
    b. 基于Redis的原子操作实现
    c. 基于ZooKeeper的临时顺序节点和Watcher机制实现
    以上3中方式各有优缺点。
    另外的一种高性能且操作更为便捷的方式为基于Redisson的分布式锁。
    Redisson实现的分布式锁弥补了Redis的原子操作实现分布式锁的缺陷。
    Redis实现分布式锁的缺陷:
    a. 需要设置过期时间TTL,设置不当容易影响性能
    b. 采用原子操作SETNX获取分布式锁时,不具备可冲入的特性。获取锁失败的线程将永远失败下去
    c. 如果Redis的服务节点放生宕机,Key没有及时释放导致死锁
    Redisson提供了多种锁供开发者选择:
    可重入锁一次性锁,联锁,红锁,读写锁 等

相关文章

网友评论

      本文标题:Java中间件 - Redisson(上) - 简介

      本文链接:https://www.haomeiwen.com/subject/wvbbkktx.html