Maison > Java > javaDidacticiel > Analyse d'un exemple de configuration Java Redis Redisson

Analyse d'un exemple de configuration Java Redis Redisson

WBOY
Libérer: 2023-04-25 08:19:06
avant
1414 Les gens l'ont consulté

Maven obligatoire méthode de configuration issons fig

Redisson's Config (stand- configuration de la version seule)

        <!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
                 <exclusions>
                     <exclusion>
                         <groupId>io.lettuce</groupId>
                         <artifactId>lettuce-core</artifactId>
                     </exclusion>
                 </exclusions>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <!--     多台相同应用(负载均),Session共享  -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.17.5</version>
        </dependency>
Copier après la connexion

La configuration de Redisson (configuration de la version Sentinel)

peut être comprise lorsque le nœud maître est supprimé et les nœuds enfants complètent automatiquement le nœud maître

spring:
  redis:
    host: 106.12.174.220
    port: 6379
    password: 123456           #没有密码就保留空
    timeout: 5000
    jedis:
       pool:
         max-active: 1000 # 池在给定时间可以分配的最大连接数。使用负值表示无限制。
         max-idle: 50  #池中“空闲”连接的最大数量。使用负值表示空闲连接的数量不受限制
         min-idle: 10  # 目标是池中要维护的最小空闲连接数。此设置只有在它和逐出运行之间的时间均为正值时才有效。
         max-wait: -1  # 在池耗尽时引发异常之前,连接分配应阻止的最长时间。使用负值无限期阻塞。
    redisson:
      tokenName: Authorization    # 用于分布式锁的唯一标识,一般使用token如果没有找到,就找sessionId
  session:
    store-type: redis   #设置session保存为默认redis的方式 ,可以解决分布式session不一致问题
Copier après la connexion
La configuration de Redisson (configuration de la version maître-esclave)

peut être compris comme la lecture et l'écriture de Redis sont séparées, mais si le nœud maître raccroche, le nœud enfant ne peut pas être automatiquement mis à niveau vers le nœud maître comme le mode sentinelle

import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@Configuration
//设置session的默认在redis中的存活时间
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 7200)   //Session过期时间,2小时,默认1800秒(半小时)   -1 永不过期
public class SessionConfig {}
Copier après la connexion
Configuration de Redisson (mode cluster)
import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;

//初始化Session配置
public class SessionInitializer extends AbstractHttpSessionApplicationInitializer {
    public SessionInitializer() {
        super(SessionConfig.class);
    }
}
Copier après la connexion

Configuration de Redisson (verrou rouge mode)

Rouge Les nœuds en mode verrouillage doivent tous être des nœuds maîtres, ou tous des Redis autonomes

Résoudre : Sentinel/maître-esclave/cluster, ces modes, les problèmes

perte de données asynchrones

problème de division du cerveau.

Parfois, le programme est si intelligent. Par exemple, lorsqu'un nœud raccroche, plusieurs clients acquièrent le verrou en même temps. Si vous pouvez accepter cette faible probabilité d’erreur, il n’y aura aucun problème avec la solution de réplication précédente. Dans le cas contraire, nous vous recommandons de mettre en œuvre la solution décrite ci-dessous.

Supposons qu'il y ait 5 nœuds Redis. Il n'y a ni relation maître-esclave ni cluster entre ces nœuds. Le client utilise la même clé et la même valeur aléatoire pour demander des verrous sur 5 nœuds. Le délai d'attente pour la demande de verrous doit être inférieur au temps de déverrouillage automatique. Lorsque le verrou est demandé sur 3 redis (plus de la moitié), le verrou est véritablement acquis. Si le verrou n'est pas obtenu, certains des redis verrouillés seront libérés.

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

@Configuration
public class RedissonConfig {

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

    @Bean
    public RedissonClient getRedisson() {
        Config config = new Config();
        SingleServerConfig singleServerConfig = config.useSingleServer();
        singleServerConfig.setAddress("redis://" + host + ":" + port).setPassword(password);
        return Redisson.create(config);
    }

}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal