Bloqueo distribuido basado en Redis, uso simple y configuración común de Redisson

introducir

Redisson es una cuadrícula de datos en memoria de Java implementada sobre Redis. Redisson proporciona la forma más fácil y conveniente de usar Redis. El propósito de Redisson es promover la separación de las preocupaciones de los usuarios sobre Redis, para que los usuarios puedan concentrarse más en el procesamiento de la lógica comercial.

Dirección del documento oficial de Redisson: https://github.com/redisson/redisson/wiki

usar

Primero agregue las dependencias de Redisson al proyecto, de la siguiente manera estoy usando la última versión en github

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

De acuerdo con la descripción de configuración en el documento del sitio web oficial, puede ver que hay dos métodos de configuración, configuración programática y configuración yaml

Aquí elijo el primer método de configuración programática y configuro el modo de nodo independiente, creo una clase de configuración de la siguiente manera

package com.vhukze.lockdemo.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * redisson 配置类
 *
 * @author vhukze
 * @date 2023/5/17 - 18:43
 */
@Configuration
public class RedissonConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private String port;

    @Bean
    public RedissonClient redissonClient() {
        // redis 地址为127.0.0.1:6379 时, 可以无需配置 一行代码搞定
//        RedissonClient redisson = Redisson.create();

        Config config = new Config();
        config.useSingleServer().setAddress("redis://" + host + ":" + port);
        return Redisson.create(config);
    }
}

Simplemente inyecte la clase de cliente Redisson cuando la use

Simplemente escriba una operación para reducir el inventario

El inventario original es 3000, use jmeter para acceder a esta interfaz 3000 veces, el resultado es más de 2000 restantes

Agregue el bloqueo distribuido de Redisson a continuación

Use la prueba jmeter nuevamente, puede ver que el inventario se ha reducido a 0

Configuración común

Al crear la clase de configuración de Redisson, hay muchas otras configuraciones para comprender

En el caso anterior, el modo independiente está configurado y se pueden usar varios otros modos en el uso real, como el modo maestro-esclavo del modo de clúster, etc., como se muestra en la figura a continuación.

Otra configuración relacionada

    @Bean
    public RedissonClient redissonClient() {
        // redis 地址为127.0.0.1:6379 时, 可以无需配置 一行代码搞定
//        RedissonClient redisson = Redisson.create();

        Config config = new Config();
        // 使用单机模式
        config.useSingleServer().setAddress("redis://" + host + ":" + port)
                // 指定Redis数据库编号
                .setDatabase(0)
                // 设置Redis用户名和密码
                .setUsername("").setPassword("")
                // 设置连接池最小空闲连接数
                .setConnectionMinimumIdleSize(10)
                // 设置连接池最大线程数
                .setConnectionPoolSize(50)
                // 设置线程超时时间为
                .setIdleConnectionTimeout(60000)
                // 设置客户端程序获取Redis连接的超时时间
                .setConnectTimeout(30000)
                // 设置响应超时时间
                .setTimeout(30000);
                
        return Redisson.create(config);
    }

 Además, al bloquear, puede establecer un tiempo de caducidad para el bloqueo

RLock lock = redissonClient.getLock("lock");
lock.lock(10, TimeUnit.SECONDS);

 Lectura recomendada: Creé una herramienta de descifrado de parámetros de la interfaz springboot y la llamé la clave maestra (se cargó en el almacén central de maven, con instrucciones detalladas para su uso)

Supongo que te gusta

Origin blog.csdn.net/qq_41890624/article/details/130731616
Recomendado
Clasificación