didacticiel d'utilisation de redis intégré au démarrage de printemps

Pointe: Il s'agit d'un didacticiel redis intégré au démarrage simple et facile à lire. Avant de l'utiliser à nouveau, veuillez d'abord télécharger le service Redis sur votre ordinateur.

Table des matières

1. Qu'est-ce que redis

2. Le projet intègre des dépendances liées à redis (la laitue par défaut utilisée ici est utilisée comme client redis, et vous pouvez choisir d'introduire jedis)

3. Ajouter une classe de configuration Redis

4. Comment utiliser le cache Redis

4.1 Annotation du cache Spring Boot

 4.2 Démarrer le service Redis

4.2 Mise en œuvre

Résumer


1. Qu'est-ce que redis

2. Le projet intègre des dépendances liées à redis (la laitue par défaut utilisée ici est utilisée comme client redis, et vous pouvez choisir d'introduire jedis)

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--spring2.X集成redis所需common-pool2-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.6.0</version>
        </dependency>

3. Ajouter une classe de configuration Redis

@Configuration //配置类
@EnableCaching //开启缓存
public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        template.setConnectionFactory(factory);
        //key序列化方式
        template.setKeySerializer(redisSerializer);
        //value序列化
        template.setValueSerializer(jackson2JsonRedisSerializer);
        //value hashmap序列化
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        return template;
    }

    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory) {
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new
                Jackson2JsonRedisSerializer(Object.class);
        //解决查询缓存转换异常的问题
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // 配置序列化(解决乱码的问题),过期时间600秒
        RedisCacheConfiguration config =
                RedisCacheConfiguration.defaultCacheConfig()
                        .entryTtl(Duration.ofSeconds(600)) //设置缓存存在的时间 600s
                        .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
                        .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
                        .disableCachingNullValues();
        RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
                .cacheDefaults(config)
                .build();
        return cacheManager;
    }


}

4. Comment utiliser le cache Redis

Tout d'abord, il est nécessaire de clarifier où le cache doit être utilisé dans un projet. De manière générale, les utilisateurs frontaux ont un grand nombre de visites. Et comme les changements de données de premier plan ne sont pas très fréquents, davantage d'opérations de requête sont impliquées. Par conséquent, il nous est nécessaire de mettre en cache les données liées au front-end (telles que la page d'accueil) dans le cache Redis pour réduire la pression sur la base de données et améliorer la vitesse d'accès.

4.1 Annotation du cache Spring Boot

(1) Cache @Cacheable
met en cache les résultats renvoyés en fonction de la méthode. Lors de la requête suivante, si le cache existe, les données mises en cache sont directement lues et renvoyées ; si le cache n'existe pas
, la méthode est exécutée et le résultat renvoyé est stocké dans le cache. Généralement utilisé sur 查询方法Internet.
Affichez le code source, les valeurs des propriétés sont les suivantes :

(2) Cache @CachePut

La méthode marquée avec cette annotation sera exécutée à chaque fois et le résultat sera stocké dans le cache spécifié. D'autres méthodes peuvent lire les données mises en cache directement à partir du cache de réponse
sans avoir à interroger la base de données. Généralement utilisé sur 新增方法Internet.

(3) Cache @CacheEvict

La méthode utilisant cet indicateur d'annotation effacera le cache spécifié. Généralement utilisé pour 更新或者删除方法visualiser
le code source, les valeurs des attributs sont les suivantes :

 4.2 Démarrer le service Redis

Démarrez le service Redis sur votre ordinateur

4.3 Mise en œuvre

 (1) Ajouter la configuration redis dans le fichier yml

spring: 
  redis: 
    host: 192.168.101.132 #Adresse IP où se trouve redis 
    port: 6379 
    password: root #Password 
    connect-timeout: 1800000 #Connection redis timeout time, (le délai d'expiration est configuré dans la classe config) database: 0 #lettuce client est utilisé pour se connecter à redis lettuce: pool: max-active: 20 #lettuce maximum Nombre de connexions : le "nombre maximum de connexions" pouvant être établies en même temps max-wait : 1 #lettuce Temps d'attente maximal pour obtenir la collecte à partir du pool de connexion : unit ms max-idle : 5 #Nombre maximal d'inactivité : Lorsque le nombre de connexions inactives est supérieur à maxIdle, il sera recyclé min-idle : 0 #Nombre minimal d'inactivité : Lorsqu'il est inférieur 
    à 
    minIdle 
    , 
      une 
        nouvelle 
        connexion 
        sera 
        créée

Car la requête est d'abord vérifiée depuis le cache, et si les données sont modifiées, afin d'assurer la cohérence finale des données. Ici, vous choisissez d'ajouter des annotations @CacheEvict à des méthodes telles que la modification, la suppression et l'ajout. Lorsque les méthodes ci-dessus sont exécutées, le cache est directement supprimé, puis les données sont extraites de la base de données et ajoutées au cache.

comme

Méthodes liées aux requêtes :

    @Cacheable(value = "banner", key = "'selectIndexList'")
    @Override
    public List<CrmBanner> selectIndexList() {
        List<CrmBanner> list = baseMapper.selectList(new
        QueryWrapper<CrmBanner>().orderByDesc("sort"));
        return list;
    }

Modifier, supprimer, ajouter des méthodes associées :

    //CacheEvict用于更新或删除,allEntries属性清楚缓存
    @CacheEvict(value = "banner", allEntries=true)
    @Override
    public void updateBannerById(CrmBanner banner) {
   		 baseMapper.updateById(banner);
    }

Enfin, testez-le.


Résumer

Jusqu'à présent, une simple utilisation de redis est terminée

Je suppose que tu aimes

Origine blog.csdn.net/weixin_58403235/article/details/129895603
conseillé
Classement