【实践篇】 4.5 Redis最强Java客户端Redisson使用示例


在这里插入图片描述

1. 前言

在我们的上一篇文章中,我们介绍了 Redisson 的相关概念 历史背景,发展现状。现在我们已经准备好进一步深入了解 Redisson基础概念,并了解它如何以及在哪些场景中提供出色、可靠的性能。在本篇文章中, 我们将 进一步理解和使用 Redisson,这是一种为 Java 提供的高级 Redis 客户端。
上一章内容 《【实践篇】Redis最强Java客户端(一)之Redisson入门介绍》

2. Redisson基础概念

在这里插入图片描述

2.1 数据结构和并发工具

2.1.1 对Redis原生数据类型的封装和使用

Redisson对Redis基本数据类型进行了封装,为Java开发者提供了丰富的数据结构和并发工具。例如:

  • RBucket:封装了Redis的string字符串;
  • RMap:封装了Redis的HashTable,也即Redis的hash命令;
  • RList:封装了Redis的List,实现了List接口;
  • RSet:封装了Redis的Set,实现了Set接口;
  • RSortedSet:封装了Redis的Zset接口;
  • RQueue:封装了Redis的list命令,实现了Queue接口;
  • RDeque:封装了Redis的list命令,实现了Deque接口;
  • RAtomicLong:封装了Redis的string(字符串),实现了原子性的long。
  1. RBucket: RBucket 用于对单一值进行缓存,代替 Java 中的 AtomicReference。在分布式环境中,提供了对单一值的持久化存储和原子操作。例如:

    RBucket<String> bucket = redisson.getBucket("bucket");
    bucket.set("redisson");
    String value = bucket.get();
    
  2. RMap: RMap 用于存储需要多个键值对,代替 Java 中的 HashMap。在分布式环境中,提供了 Map 实现,支持事务和原子操作。例如:

    RMap<String, Integer> map = redisson.getMap("map");
    map.put("a", 1);
    map.put("b", 2);
    Integer bValue = map.get("b");
    
  3. RList: RList 用于有序存储多个元素,并可能存储重复元素,代替 Java 中的 ArrayList。实现了分布式环境下的可变数组,支持正向和反向遍历。例如:

    RList<Integer> list = redisson.getList("list");
    list.add(1);
    list.add(2);
    list.add(3);
    Integer secondElement = list.get(1);
    
  4. RSet: RSet 用于存储无序且不重复的多个元素,代替 Java 中的 HashSet。在分布式环境中,提供了无序集合的实现,支持常见的集合操作。例如:

    RSet<Integer> set = redisson.getSet("set");
    set.add(1);
    set.add(2);
    set.add(3);
    boolean containsTwo = set.contains(2);
    
  5. RSortedSet: RSortedSet 用于有序存储元素,并能根据元素的自然顺序或自定义比较器进行排序,代替 Java 中的 TreeSet。在分布式环境下,实现了有序集合,支持快速地获取有序集中的最大或最小元素。例如:

    RSortedSet<Integer> sortedSet = redisson.getSortedSet("sortedSet");
    sortedSet.add(3);
    sortedSet.add(1);
    sortedSet.add(2);
    Integer firstElement = sortedSet.first();
    
  6. RQueue: RQueue 用于多个元素按一定顺序进行存储,并按该顺序进行检索,代替 Java 中的 Queue。在分布式环境中,提供了队列实现,尤其有利于实现生产者-消费者模型。例如:

    RQueue<Integer> queue = redisson.getQueue("queue");
    queue.add(1);
    Integer item = queue.poll();
    
  7. RDeque: RDeque 用于需要从两端插入或删除元素的数据结构,代替 Java 中的 LinkedList。在分布式环境中,提供了双端队列实现,支持从头部或尾部插入和删除元素。例如:

    RDeque<Integer> deque = redisson.getDeque("deque");
    deque.addFirst(1);
    deque.addLast(2);
    Integer firstElement = deque.getFirst();
    Integer lastElement = deque.getLast();
    
  8. RAtomicLong: RAtomicLong 用于对单一值进行原子操作,如自增、自减等,代替 Java 中的 AtomicLong。在分布式环境下,进行原子增减操作,避免并发问题。例如:

    RAtomicLong atomicLong = redisson.getAtomicLong("atomicLong");
    atomicLong.set(1);
    atomicLong.incrementAndGet();
    long atomicLongValue = atomicLong.get();
    

2.1.2 分布式锁实现和应用

Redisson支持多种分布式锁和同步器,如:RLock,RSemaphore,RCountDownLatch,RReadWriteLock等。这些锁具有超时自动解锁、阻塞等待锁和公平锁等特性。

例如,使用RLock实现分布式锁:

RLock lock = redisson.getLock("anyLock");
lock.lock();
try {
   // 执行业务代码
} finally {
   lock.unlock();
}

2.1.3 分布式集合使用方法

Redisson提供了分布式的List、Set、SortedSet、Map和Queue,适用于各种场景。例如,使用RList实现分布式列表:

RList<String> list = redisson.getList("anyList");
list.add("1");
list.add("2");

2.2 Redisson的高级特性

2.2.1 分布式对象实现和使用

Redisson提供了一些分布式对象,如RBloomFilter(布隆过滤器),RHyperLogLog,RLexSortedSet等。例如,使用RBloomFilter实现分布式布隆过滤器:

RBloomFilter<String> bloomFilter = redisson.getBloomFilter("sampleFilter");
bloomFilter.tryInit(10000L, 0.03); 
bloomFilter.add("item");

2.2.2 分布式消息队列实现和使用

Redisson支持RQueue、RBlockingQueue、RDelayedQueue等分布式队列和阻塞队列。例如,使用RQueue实现分布式消息队列:

RQueue<String> queue = redisson.getQueue("anyQueue");
queue.offer("item");
String item = queue.poll();

2.2.3 分布式计数器实现和使用

Redisson提供了一些分布式计数器,如RAtomicLong、RAtomicDouble、RCountDownLatch等。例如,使用RAtomicLong实现分布式原子长整数:

RAtomicLong atomicLong = redisson.getAtomicLong("anyLong");
atomicLong.set(3);
atomicLong.incrementAndGet();

3. 参考资料

  1. Redisson官方网站:https://redisson.org/

  2. Redisson GitHub仓库:https://github.com/redisson/redisson

  3. redisson 参考文档 https://redisson.org/documentation.html

4. 源码地址

https://github.com/wangshuai67/icepip-springboot-action-examples
https://github.com/wangshuai67/Redis-Tutorial-2023

5. Redis从入门到精通系列文章

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
概要介绍: 本课程主要是介绍并实战一款java中间件~redisson,介绍redisson相关的核心技术栈及其典型的应用场景,其中的应用场景就包括布隆过滤器、限流器、短信发送、实时/定时邮件发送、数据字典、分布式服务调度等等,在业界号称是在java项目里正确使用redis的姿势。本课程的目标就在于带领各位小伙伴一起学习、攻克redisson,更好地巩固自己的核心竞争力,而至于跳槽涨薪,自然不在话下!  课程内容: 说起redisson,可能大伙儿不是很熟悉,但如果说起redis,想必肯定很多人都晓得。没错,这家伙字如其名,它就是架设在redis基础上的一款综合性的、新型的中间件,号称是java企业级应用开发中正确使用redis的姿势/客户端实例。 它是架设在redis基础之上,但拥有的功能却远远多于原生Redis 所提供的,比如分布式对象、分布式集合体系、分布式锁以及分布式服务调度等一系列具有分布式特性的对象实例… 而这些东西debug将在本门课程进行淋漓尽致的介绍并实战,除此之外,我们将基于spring boot2.0搭建的多模块项目实战典型的应用场景:对象存储、数据字典、短信发送、实时/定时邮件发送、布隆过滤器、限流组件、分布式服务调度....课程大纲如下所示: 下面罗列一下比较典型的核心技术栈及其实际业务场景的实战,如下图所示为redisson基于订阅-发布模式的核心技术~主题Topic的实际业务场景,即实时发送邮件: 而下图则是基于“多值映射MultiMap”数据结构实战实现的关于“数据字典”的缓存管理: 除此之外,我们还讲解了可以与分布式服务调度中间件dubbo相媲美的功能:分布式远程服务调度,在课程中我们动手搭建了两个项目,用于分别充当“生产者”与“消费者”角色,最终通过redisson的“服务调度组件”实现服务与服务之间、接口与接口之间的调用!  课程收益: (1)认识并掌握redisson为何物、常见的几种典型数据结构-分布式对象、集合、服务的应用及其典型应用场景的实战; (2)掌握如何基于spring boot2.0整合redisson搭建企业级多模块项目,并以此为奠基,实战企业级应用系统中常见的业务场景,巩固相应的技术栈! (3)站在项目管理与技术精进的角度,掌握对于给定的功能模块进行业务流程图的绘制、分析、模块划分、代码实战与性能测试和改进,提高编码能力与其他软实力; (4)对于Java微服务、分布式、springboot精进者而言,学完本课程,不仅可以巩固提高中间件的实战能力,其典型的应用场景更有助于面试、助力相关知识点的扫盲! 如下图所示: 关键字:Spring Boot,Redis,缓存穿透,缓存击穿,缓存雪崩,红包系统,Mybatis,高并发,多线程并发编程,发送邮件,列表List,集合Set,排行榜,有序集合SortedSet,哈希Hash ,进阶实战,面试,微服务、分布式 适用人群:redisson学习者,分布式中间件实战者,微服务学习者,java学习者,spring boot进阶实战者,redis进阶实战者
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰点.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值