Tutorial zur Verwendung von Spring Boot Integrated Redis

Tipp: Dies ist ein einfaches, leicht lesbares Spring Boot-integriertes Redis-Tutorial. Bevor Sie es erneut verwenden, laden Sie bitte zuerst den Redis-Dienst auf Ihren Computer herunter.

Inhaltsverzeichnis

1. Was ist Redis?

2. Das Projekt integriert Redis-bezogene Abhängigkeiten (der hier verwendete Standardsalat wird als Redis-Client verwendet, und Sie können wählen, ob Sie Jedis einführen möchten).

3. Redis-Konfigurationsklasse hinzufügen

4. So verwenden Sie den Redis-Cache

4.1 Anmerkung zum Spring Boot-Cache

 4.2 Starten Sie den Redis-Dienst

4.2 Umsetzung

Zusammenfassen


1. Was ist Redis?

2. Das Projekt integriert Redis-bezogene Abhängigkeiten (der hier verwendete Standardsalat wird als Redis-Client verwendet, und Sie können wählen, ob Sie Jedis einführen möchten).

        <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. Redis-Konfigurationsklasse hinzufügen

@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. So verwenden Sie den Redis-Cache

Zunächst muss geklärt werden, wo in einem Projekt der Cache eingesetzt werden soll. Im Allgemeinen haben die Front-End-Benutzer eine große Anzahl von Besuchen. Und da die Änderungen der Vordergrunddaten nicht sehr häufig sind, sind mehr Abfragevorgänge erforderlich. Daher ist es für uns erforderlich, Front-End-bezogene Daten (z. B. Homepage) im Redis-Cache zwischenzuspeichern, um den Datenbankdruck zu verringern und die Zugriffsgeschwindigkeit zu verbessern.

4.1 Anmerkung zum Spring Boot-Cache

(1) Cache @Cacheable
speichert die zurückgegebenen Ergebnisse gemäß der Methode im Cache. Wenn bei der nächsten Anforderung ein Cache vorhanden ist, werden die zwischengespeicherten Daten direkt gelesen und zurückgegeben. Wenn der Cache nicht vorhanden ist, wird die Methode ausgeführt und das
zurückgegebene Ergebnis im Cache gespeichert. 查询方法Wird im Allgemeinen im Internet verwendet .
Sehen Sie sich den Quellcode an. Die Eigenschaftswerte lauten wie folgt:

(2) Cache @CachePut

Die mit dieser Anmerkung markierte Methode wird jedes Mal ausgeführt und das Ergebnis wird im angegebenen Cache gespeichert. Andere Methoden können zwischengespeicherte Daten direkt aus dem Antwortcache lesen,
ohne die Datenbank abfragen zu müssen. 新增方法Wird im Allgemeinen im Internet verwendet .

(3) Cache @CacheEvict

Die Methode, die dieses Annotationsflag verwendet, löscht den angegebenen Cache. Die Attributwerte werden im Allgemeinen zum 更新或者删除方法Anzeigen des Quellcodes verwendet und lauten wie folgt:

 4.2 Starten Sie den Redis-Dienst

Starten Sie den Redis-Dienst auf Ihrem Computer

4.3 Umsetzung

 (1) Redis-Konfiguration in der YML-Datei hinzufügen

Spring: 
  Redis: 
    Host: 192.168.101.132 #IP-Adresse, auf der sich Redis befindet. 
    Port: 6379. 
    Passwort: Root 
    Anzahl 
    der 
      Verbindungen 
        “, die gleichzeitig hergestellt werden können max-wait: 1 #lettuce Maximale 
    Wartezeit für den Erhalt der Sammlung aus dem Verbindungspool: Einheit ms max-idle: 5 #Maximale Leerlaufanzahl: Wenn die Anzahl der Leerlaufverbindungen größer als maxIdle ist, wird sie recycelt. min-idle: 0 #Minimale Leerlaufanzahl: Wenn sie niedriger als minIdle ist, wird 
    eine 
        neue 
        Verbindung 
        erstellt

Da die Abfrage zunächst aus dem Cache überprüft wird und ob die Daten geändert werden, wird die endgültige Konsistenz der Daten sichergestellt. Hier können Sie @CacheEvict-Anmerkungen zu Methoden wie Änderung, Löschung und Hinzufügung hinzufügen. Wenn die oben genannten Methoden ausgeführt werden, wird der Cache direkt gelöscht, und dann werden die Daten aus der Datenbank abgerufen und dem Cache hinzugefügt.

wie

Abfragebezogene Methoden:

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

Verwandte Methoden ändern, löschen und hinzufügen:

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

Testen Sie es abschließend.


Zusammenfassen

Bisher ist eine einfache Redis-Nutzung abgeschlossen

Ich denke du magst

Origin blog.csdn.net/weixin_58403235/article/details/129895603
Empfohlen
Rangfolge