首页 > 数据库 >【Redisson】源码预读准备工作

【Redisson】源码预读准备工作

时间:2024-04-02 09:24:38浏览次数:24  
标签:Redisson 服务 redisProperties singleServerConfig 源码 预读 public

1  前言

微服务常见的就是服务和服务之间的协同了,那么 Redisson 就是我们常用的一种协同工具了,所以想看看它的源码,只有了解它的原理,才能更好的正确使用它。

2  准备工作

既然要看是不是得先知道的它的源码地址呢?地址:Redisson 源码

有了源码,是不是还需要一份文档呢?没文档的话怎么知道它的组成成分呢?每个组件和组件之间的关系呢?是不是:官方中文文档奉上,打开慢? gitee地址奉上

我找了找关于 Redisson 的书籍,因为我喜欢边看源码边看书,因为书讲的很全很细,能从头给我们讲它的由来,它的发展过程,但是没找到一本专门讲 Redisson 的书籍(大多都是官网文档的东西),有小伙伴知道的话,还望告下我。

3  概览

从整个目录结构看下来,大概分这些内容:

从配置到使用,以及夹杂着各种数据结构和对象,以及服务和服务之间的协同,再到框架的整合。

配置、框架整合:告诉我们要使用 Redisson 应该怎么引入,并且怎么配置

调用方式:主要分同步和异步以及异步流式调用(响应式框架使用比如阿里的gateway网关里使用)

序列化:讲究的就是我们存取数据时,肯定是要先序列化和反序列化对象的哈,默认的也是 spring里的默认的 jackson (这里延申一下,我们平时常用的json方式有哪些呢?是不是就是 jackson、fastjson、gson三个,至于哪个好,唉,没细细研究过,我做过的项目那家伙五花八门的啥也用)

数据分片:主要就是大对象的拆分,降低单节点的负载

分布式对象:主要包含了一些高级对象,布隆过滤器呀、基数统计呀、原子型对象、限流器对象等

分布式集合:队列、Set、Zset、映射等

分布式服务:这个有点牛皮了,可以通过它进行服务的注册和调用,以及一些高级用法

分布式锁:提供各种锁,来协同各个服务(可以是某个服务下的多个实例、也可以是不同服务之间的协同,在我们 Java 里本质就是协同多个JVM进程)

命令对象关系:主要是串联 Redis中的操作,在 Redisson中对应的操作关系

其他:就剩 Redisson 给我们的一些其他高级功能、以及工具哈。

4  简单尝试

那看了一下整体的大概,我们动手尝试尝试:

首先引入依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.15.0</version>
</dependency>

创建 Redisson 的 Bean:

/**
 * @author kuku
 */
@Configuration
@EnableConfigurationProperties({RedisProperties.class})
public class RedissonConfig {

    @Autowired
    private RedisProperties redisProperties;

    @Bean
    public RedissonClient redissonClient(){
        Config config = new Config();
        SingleServerConfig singleServerConfig = config.useSingleServer();
        singleServerConfig.setAddress("redis://"+redisProperties.getHost()+":"+redisProperties.getPort());
        singleServerConfig.setDatabase(redisProperties.getDatabase());
        if(StringUtils.isNotBlank(redisProperties.getPassword())) {
            singleServerConfig.setPassword(redisProperties.getPassword());
        }
        return Redisson.create(config);
    }
}

共享变量的安全递增:

/**
 * @author kuku
 */
@RestController
@RequestMapping("/user/")
public class UserController {
private int num = 0;

    @Autowired
    private RedissonClient redissonClient;
    @GetMapping("/testRedisson")
    public String testRedisson() {
        RLock lock = redissonClient.getLock("numFlag");
        lock.lock();
        try {
            num++;
        } finally {
            lock.unlock();
        }
        return String.valueOf(num);
    }

}

5  小结

好啦,本节就看到这里,剩下的要开始一点点详细的去扣细节了,有理解不对的地方欢迎指正哈。

标签:Redisson,服务,redisProperties,singleServerConfig,源码,预读,public
From: https://www.cnblogs.com/kukuxjx/p/18107672

相关文章

  • 【附源码】JAVA计算机毕业设计汪汪喵宠物寄养中心系统设计与开发(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着社会的发展和人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。人们对宠物的关爱和投入也越来越多,这导致了宠物服务行业的迅速发展。其中,宠......
  • 【附源码】JAVA计算机毕业设计网上扶贫农产品销售系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义随着互联网技术的迅速发展,传统的农产品销售模式已经不能满足现代消费者的需求。尤其是在扶贫领域,由于地理位置偏远、信息不对称等因素,贫困地区的农产品往往难以打......
  • 【附源码】JAVA计算机毕业设计网络安全知识学习系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在信息技术飞速发展的今天,网络安全已经成为社会关注的热点问题。随着网络应用的普及和互联网技术的不断进步,网络攻击、数据泄露、恶意软件等安全威胁日......
  • 【附源码】JAVA计算机毕业设计网上购物系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为现代商业交易中不可或缺的一部分。网上购物系统作为电子商务平台的典型代表,以其便捷性、高效性和丰富的商品......
  • 【附源码】JAVA计算机毕业设计网上购物中心(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已成为现代社会中不可或缺的一部分。网络购物因其便捷性、高效性和多样性,受到了广大消费者的喜爱。传统的购物方式需......
  • 【附源码】JAVA计算机毕业设计网上花店系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为现代社会中一个重要的商业活动形式。网络购物作为电子商务的重要组成部分,以其方便快捷的特点深受广大消费者......
  • 【附源码】JAVA计算机毕业设计网上图书销售系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为现代社会中不可或缺的一部分。在线购物系统因其方便快捷的特点被广大消费者接受和喜爱。特别是在图书行业,网......
  • Node.js毕业设计基于HarmonyOS在线学习平台app(Express+附源码)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的迅猛发展,移动应用已经成为了人们获取信息、学习知识的重要渠道。在线学习平台作为现代教育技术的重要组成部分,为人们提供了便捷的学习途径......
  • Node.js毕业设计基于HarmonyOS的门诊预约平台(Express+附源码)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着科技的不断发展,互联网已经深入到我们生活的方方面面,特别是在医疗领域,互联网技术的应用使得医疗服务变得更加便捷和高效。然而,尽管互联网医疗的发展势头......
  • java计算机毕业设计(附源码)医患辅助系统(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的飞速发展,医疗健康领域正经历着前所未有的变革。传统的医患交流模式受限于时间和空间,难以满足现代社会对医疗服务效率和质量的要求。医患辅......