Redisson配置详解

一、Redisson配置类

在使用Redisson之前,需要首先将Redisson的配置信息进行初始化。Redisson提供了很多种方式来实现配置信息的初始化,其中最为常用的是通过创建Config对象来设置Redisson的配置信息。创建Config对象有两种方式,一种是通过代码创建,另一种是通过读取配置文件创建。

代码创建Config对象的方式如下:

// 创建单机模式配置对象
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379");
RedissonClient redisson = Redisson.create(config);

配置文件创建Config对象的方式如下:

# 创建单机模式配置对象
singleServerConfig:
  address: "redis://127.0.0.1:6379"
RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-single.yml").getInputStream()));

二、Redisson配置读取不到

如果在通过配置文件创建Config对象时,程序运行过程中出现了无法读取配置文件的情况,可以在创建Config对象时先打印日志查看读取了哪些配置文件,以及读取的文件路径是否正确。代码如下:

// 打印日志
Config config = Config.fromYAML(new ClassPathResource("redisson-single.yml").getInputStream());
log.info("配置文件路径:" + config.toYAML());
// 创建RedissonClient
RedissonClient redisson = Redisson.create(config);

三、Redisson配置集群

在Redisson中,可以使用多种方式创建Redis的集群。在代码创建Config对象时,可以使用useClusterServers()方法来创建集群配置对象。在配置文件创建Config对象时,则需要按照以下方式进行配置。

# 集群模式配置
clusterServersConfig:
  nodeAddresses:
      - "redis://127.0.0.1:6379"
      - "redis://127.0.0.1:6380"
      - "redis://127.0.0.1:6381"
RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-cluster.yml").getInputStream()));

四、Redisson配置文件

在使用Redisson时,除了可以通过代码的方式来初始化Redisson的配置信息外,还可以通过配置文件来进行配置。Redisson支持多种配置文件格式,例如properties、json、yml等。以下是一个Redisson的yml配置文件示例:

# 单节点信息配置
singleServerConfig:
  address: "redis://127.0.0.1:6379"
  connectionPoolSize: 64
  connectionMinimumIdleSize: 32
  slaveConnectionPoolSize: 250
  masterConnectionPoolSize: 250
  readTimeout: 10000
  connectTimeout: 10000
  timeout: 3000
  retryAttempts: 3
  retryInterval: 1500

# 集群信息配置
# clusterServersConfig:
#   nodeAddresses:
#     - "redis://127.0.0.1:6379"
#     - "redis://127.0.0.1:6380"
#     - "redis://127.0.0.1:6381"
#   scanInterval: 1000

# 哨兵模式配置
# sentinelServersConfig:
#   masterName: myMaster
#   sentinelAddresses:
#     - "redis://127.0.0.1:26379"
#     - "redis://127.0.0.1:26380"
#     - "redis://127.0.0.1:26381"
#   masterConnectionPoolSize: 250
#   slaveConnectionPoolSize: 250
#   readTimeout: 10000
#   connectTimeout: 10000
#   timeout: 3000
#   retryAttempts: 3
#   retryInterval: 1500

# Redisson配置项
# threads: 16

五、Redisson配置哨兵

在使用哨兵模式时,需要创建SentinelServersConfig对象,并将其设置为Config对象的配置信息。代码创建SentinelServersConfig对象的方式如下:

SentinelServersConfig sentinelConfig = new SentinelServersConfig();
sentinelConfig.setMasterName("mymaster");
sentinelConfig.addSentinelAddress("redis://127.0.0.1:26379");
sentinelConfig.addSentinelAddress("redis://127.0.0.1:26380");
sentinelConfig.addSentinelAddress("redis://127.0.0.1:26381");
config.useSentinelServers().setMasterName("mymaster")
                .addSentinelAddress("redis://127.0.0.1:26379")
                .addSentinelAddress("redis://127.0.0.1:26380")
                .addSentinelAddress("redis://127.0.0.1:26381");

六、Redisson配置参数

根据Redisson的官方文档,可以根据自己的需要来调整Redisson的各种参数,以达到最优的性能表现。以下是一些常用的配置参数及其说明。

  • connectTimeout:连接超时时间,单位:毫秒
  • timeout:读写超时时间,单位:毫秒
  • retryAttempts:连接失败重试次数,-1表示不限制重试次数
  • retryInterval:重试时间间隔,单位:毫秒
  • threads:响应请求线程数,最大为16

可以通过以下方式对Redisson的参数进行配置:

Config config = new Config();
config.useSingleServer()
        .setAddress("redis://127.0.0.1:6379")
        .setRetryAttempts(3)
        .setRetryInterval(1500)
        .setTimeout(3000)
        .setThreads(8);

七、Redisson配置序列化

为了提高Redisson的性能表现,Redisson在数据存储时使用了高效的序列化机制。在Redisson中,默认使用的是JDK序列化机制,但是考虑到JDK的序列化机制在序列化性能、序列化结果可读性、可靠性等方面存在一些问题,因此Redisson提供了多种序列化方式供用户选择。

常用的序列化方式有三种:JDK序列化、FastJSON序列化和Kryo序列化。其中,Kryo序列化是性能最高的一种序列化方式,但是需要注意的是,Kryo序列化与JDK序列化不兼容,因此在使用Kryo序列化时需要注意操作系统的类型及JDK的版本。

如果要对Redisson的序列化机制进行定制,可以通过以下方式来实现。

// 基于Jackson序列化
SerializationConfig serialConfig = config.getCodec().getSerializationConfig();
serialConfig.setJacksonObjectMapper(new ObjectMapper());

// 基于FastJSON序列化
SerializationConfig serialConfig = config.getCodec().getSerializationConfig();
serialConfig.setSerializer("com.alibaba.fastjson.JSON").setDecoder("com.alibaba.fastjson.JSON");

// 基于Kryo序列化
SerializationConfig serialConfig = config.getCodec().getSerializationConfig();
Kryo kryo = new Kryo();
kryo.register(User.class);
kryo.register(Order.class);
kryo.register(Item.class);
kryo.register(ArrayList.class);
kryo.register(LinkedList.class);
kryo.register(RedisCommand.class);
UnicornKryoPool pool = new UnicornKryoPoolImpl(kryo);
serialConfig.setKryoPool(pool);

八、Redisson配置了集群不生效

如果在配置完Redisson集群之后,出现了集群无法使用的情况,可以先检查一下Redisson的版本号是否与Redis的版本是否匹配。Redisson的版本号最好与Redis的版本号一致,否则可能会出现一些兼容性问题。

如果Redisson的版本号与Redis的版本号一致,那么可以通过以下方式来检查Redisson的配置是否正确:

RedissonClient redisson = Redisson.create(Config.fromYAML(new ClassPathResource("redisson-cluster.yml").getInputStream()));
// 打印Redisson的日志
((RLogger)redisson.getConfig().getLogger()).setLevel(Level.DEBUG);
log.debug("Redisson配置信息:" + redisson.getConfig().toJSON());

九、Redisson配置yml

在使用Redisson时,可以根据自己的需求对Redisson的参数进行配置。可以将Redisson的配置信息存储在一个名为redisson.yml的文件中,然后通过Config.fromYAML()方法来加载配置信息。以下是一个Redisson的yml配置文件示例:

singleServerConfig:
  address: "redis://127.0.0.1:6379"
  connectionMinimumIdleSize: 10
  connectionPoolSize: 64
  retryAttempts: 3
  retryInterval: 1500
  connectTimeout: 10000
  timeout: 3000

threads: 64

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/179942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-22 05:10
下一篇 2024-11-22 05:10

相关推荐

  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25

发表回复

登录后才能评论