联系我们
简单又实用的WordPress网站制作教学
当前位置:网站首页 > 程序开发学习 > 正文

[实践篇]Redis最强JAVA客户端(一)之Redisson入门介绍

作者:小教学发布时间:2023-09-20分类:程序开发学习浏览:68


导读:Redisson入门介绍文章目录Redisson入门介绍1.1Redisson简介1.1.1起源和历史1.1.2优势和特点1.1.3与其他JAVARedis客户端的比较1.2使用...

Redisson入门介绍

文章目录

  • Redisson入门介绍
    • 1.1Redisson简介
      • 1.1.1起源和历史
      • 1.1.2优势和特点
      • 1.1.3与其他JAVA Redis客户端的比较
    • 1.2使用和配置
      • 1.2.1依赖和开发工具包
      • 1.2.2配置文件解析
      • 1.2.3连接池配置
  • 1.3优雅的让散列的某个字段过期
  • 2.参考资料
  • 3.源码地址
  • 4.Redis从入门到精通系列文章


[实践篇]Redis最强JAVA客户端(一)之Redisson入门介绍

1.1Redisson简介

[实践篇]Redis最强JAVA客户端(一)之Redisson入门介绍

1.1.1起源和历史

Redisson最初由GitHub用户mrniko创建,并在Apache2.0许可证下发布。它的目标是提供一组强大的工具和接口,帮助开发人员在分布式环境中处理数据,并解决并发和一致性的问题。

Redisson是一款在Redis的基础上实现的JAVA驻内存数据网格(内存数据网格)。它提供了很多分布式的Java对象并直接映射到redis服务器的数据结构。

1.1.2优势和特点

Redisson提供了一系列丰富的Redis对象供用户使用,比如:BucketDequeSetSortedSetMapLockAtomicLongCountDownLatchPublish / SubscribeBloom filterHyperLogLog等等.它能使开发者可以直接在代码中操纵这些对象,而不是维护细节,提高了开发的效率.
Redisson具有以下优势和特点:

  • 简单易用:Redisson提供了简单、一致的接口,使得开发人员可以像使用本地对象一样使用分布式对象。
  • 高性能:Redisson使用了异步和无锁的设计,以最大程度地提高性能和吞吐量。
  • 分布式数据结构:Redisson提供了一系列分布式数据结构,如分布式集合、分布式映射、分布式列表等,使得处理大规模数据变得更加高效。
  • 分布式锁:Redisson提供了可重入的分布式锁,帮助开发人员解决并发访问的问题。
  • 分布式队列:Redisson提供了分布式队列,支持先进先出和优先级队列,适用于任务调度和消息传递等场景。
  • 高可用和故障恢复:Redisson支持主从复制和哨兵模式,确保系统的高可用性和故障恢复能力。

1.1.3与其他JAVA Redis客户端的比较

和Jedis以及lettuce等其他Redis爪哇客户端比较,Redisson提供了更丰富的分布式对象模型,以及更强大的并发处理和故障恢复特性。
Redisson的高级特性,包括高级JAVA对象、故障转移、母子复制支持、公平锁支持和分布式服务等,使它成为JAVA环境中最强大、最灵活的redis客户端之一。
与其他客户端(Jedis和lettuce)的比较,足以看出来他的天下无敌.

雷迪森绝地武士生菜
Redis数据类型支持(支持全部(包括流)支持全部支持全部
高级JAVA对象多班并发和分布式JAVA对象没有没有
连接池
集群支持
故障转移没有
母子复制支持没有
Ssl支持
Lua脚本编写(有(只读)(有(只读)
响应式接口没有
事务支持
分布式锁(有(包括公平锁)没有没有
公平锁支持没有没有
发布和订阅
异步接口没有
分布式服务有(例如BloomFilter、位集、原子长等)没有没有

1.2使用和配置

1.2.1依赖和开发工具包

通过在Maven或Gradle中添加以下依赖来使用Redisson

<dependencies>
    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>3.13.6</version>
    </dependency>
</dependencies>

1.2.2配置文件解析

Redisson可以通过JSON,YAML,MAP或者编程配置。以下是一个配置示例:

# Redisson 配置文件

# Redisson 服务器地址
# 可以是单个服务器或多个服务器
# 多个服务器之间使用逗号分隔
redisson.address = "redis://127.0.0.1:6379,redis://127.0.0.2:6379"

# Redisson 连接超时时间(毫秒)
redisson.connectionTimeout = 3000

# Redisson 密码
redisson.password = "password"

# Redisson 连接池配置

# 最小空闲连接数
redisson.connectionPool.minIdle = 10

# 最大连接数
redisson.connectionPool.maxSize = 100

# 连接空闲超时时间(毫秒)
redisson.connectionPool.idleTimeout = 10000

# 连接最大空闲时间(毫秒)
redisson.connectionPool.maxIdleTime = 60000

# Redisson 重试配置

# 重试次数
redisson.retryAttempts = 3

# 重试间隔时间(毫秒)
redisson.retryInterval = 1000

# Redisson 序列化配置
# 可以选择不同的序列化方式,如 JSON、Jackson、Kryo 等
redisson.codec = org.redisson.codec.JsonJacksonCodec

# Redisson 事件监听器配置

# 是否启用事件监听器
redisson.listener.enable = true

# 事件监听器线程池大小
redisson.listener.threadPoolSize = 10

# Redisson 集群配置

# 是否启用集群模式
redisson.cluster.enabled = false

# 集群节点地址
redisson.cluster.nodes = "redis://127.0.0.1:6379,redis://127.0.0.2:6379"

# 集群扫描间隔时间(毫秒)
redisson.cluster.scanInterval = 2000

1.2.3连接池配置

通过在配置中设置connectionMinimumIdleSizeconnectionPoolSize参数,可以进行Redisson的连接池配置.

  • connectionMinimumIdleSize:最小空闲连接数,表示即使没有数据库连接时依然维持的空闲连接数量。默认值:32
  • connectionPoolSize:最大连接池数量,对所有路由器节点来说,都是公用的。默认值:64

注意配置中的其它参数也会影响Redisson的性能和行为,比如timeoutretryAttemptsretryInterval等等.应根据实际应用需要来调整这些参数.
当然,我们可以为每个配置项添加注释,以方便理解每个参数的作用.下面是带注释的Yaml配置文件:

singleServerConfig:
  idleConnectionTimeout: 10000 # 空闲连接超时,单位:毫秒
  connectTimeout: 10000 # 连接超时,单位:毫秒
  timeout: 3000 # 命令等待超时,单位:毫秒
  retryAttempts: 3 # 命令失败重试次数
  retryInterval: 1500 # 命令重试发送间隔,单位:毫秒
  password: null # Redis 服务器密码
  subscriptionsPerConnection: 5 # 每个连接的最大订阅数量
  clientName: null # Redis 客户端名称
  address: "redis://127.0.0.1:6379" # Redis 服务器地址
  subscriptionConnectionMinimumIdleSize: 1 # 订阅连接的最小空闲数量
  subscriptionConnectionPoolSize: 50 # 订阅连接的最大连接数量
  connectionMinimumIdleSize: 10 # 正常连接的最小空闲数量,至少保持10个空闲连接
  connectionPoolSize: 50 # 正常连接的最大连接数量,最多可以创建50个连接
  database: 0 # 连接的数据库编号,默认是0
  dnsMonitoringInterval: 5000 # DNS监控间隔,单位:毫秒

1.3优雅的让散列的某个字段过期

为了感受redisson的强大,我们写一个redis其他客户端不具备的能力.
使用Redisson设置Hash结构的二级Key过期。也就是设置哈希结构的字段设置过期时间。我们使用Redisson优雅的使散列的某个字段过期。

引入依赖.

    <dependency>
      <groupId>org.redisson</groupId>
      <artifactId>redisson</artifactId>
      <version>3.16.1</version>
    </dependency>

redisson.yaml示例:

singleServerConfig:
  idleConnectionTimeout: 10000
  connectTimeout: 10000
  timeout: 3000
  retryAttempts: 3
  retryInterval: 1500
  password: null
  subscriptionsPerConnection: 5
  clientName: null
  address: "redis://127.0.0.1:6379"
  subscriptionConnectionMinimumIdleSize: 1
  subscriptionConnectionPoolSize: 50
  connectionMinimumIdleSize: 10
  connectionPoolSize: 50
  database: 0
  dnsMonitoringInterval: 5000

测试

package com.icepip,redisson.example;

import org.redisson.Redisson;
import org.redisson.api.RBucket;
import org.redisson.api.RMap;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

import java.util.concurrent.TimeUnit;

public class Main {

    public static void main(String[] args) {
        Config config = Config.fromYAML(Main.class.getClassLoader().getResource("redisson.yaml"));
        RedissonClient redisson = Redisson.create(config);

        // 设置Hash的key和value
        RMap<String, String> map = redisson.getMap("hash");
        map.put("field", "value");

        // 对于相应的key设置过期时间
        RBucket<String> bucket = redisson.getBucket("hash:field:expire");
        bucket.set("dummyValue", 5, TimeUnit.MINUTES);
 
    }
}

2.参考资料

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

  2. Https://github.com/redisson/redisson网站:Redisson GitHub仓库

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

3.源码地址

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

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

  • “[Redis实践篇]使用Redisson优雅实现项目实践过程中的5种场景]”
  • 《Redis使用Lua脚本和Redisson来保证库存扣减中的原子性和一致性》
  • “SpringBoot Redis使用Lettuce和Jedis配置哨兵模式”
  • “Redis[应用篇]之RedisTemplate基本操作]”
  • “Redis从入门到精通[实践篇]之SpringBoot配置Redis多数据源”
  • “Redis从入门到精通[进阶篇]之三分钟了解Redis超级日志数据结构”
  • “Redis从入门到精通[进阶篇]之三分钟了解Redis地理位置数据结构GeoHash”
  • 《雷迪斯哨兵(Redis从入门到精通[进阶篇]之高可用哨兵机制)详解》
  • 《Redis从入门到精通[进阶篇]之Redis主从复制详解》
  • 《Redis从入门到精通[进阶篇]之Redis事务详解》
  • 《Redis从入门到精通[进阶篇]之对象机制详解》
  • 《Redis从入门到精通[进阶篇]之消息传递发布订阅模式详解》
  • 《Redis从入门到精通[进阶篇]之持久化AOF详解》
  • “Redis从入门到精通[进阶篇]之持久化Rdb详解”
  • “Redis从入门到精通[高阶篇]之底层数据结构字典(词典)详解”
  • “Redis从入门到精通[高阶篇]之底层数据结构快表QuickList详解”
  • 《Redis从入门到精通[高阶篇]之底层数据结构简单动态字符串(Sds)详解》
  • “Redis从入门到精通[高阶篇]之底层数据结构压缩列表(ZipList)详解”
  • 《Redis从入门到精通[进阶篇]之数据类型Stream详解和使用示例》
    [实践篇]Redis最强JAVA客户端(一)之Redisson入门介绍大家好,我是冰点,今天的Redis最强JAVA客户端(一)之Redisson入门介绍,全部内容就是这些。如果你有疑问或见解可以在评论区留言.





程序开发学习排行
最近发表
网站分类
标签列表