Heim  >  Artikel  >  Java  >  Spring Boot integriert Redis, um Caching und Sitzungsverwaltung zu implementieren

Spring Boot integriert Redis, um Caching und Sitzungsverwaltung zu implementieren

WBOY
WBOYOriginal
2023-06-23 08:33:06859Durchsuche

Mit der rasanten Entwicklung der Internet-Technologie und den steigenden Anwendungsanforderungen sind Probleme mit hoher Parallelität und Datenverarbeitung zu Herausforderungen geworden, denen sich jeder Entwickler stellen muss. In diesem Zusammenhang sind Caching und Sitzungsmanagement zum Schlüssel zur Verbesserung der Systemleistung und Reaktionsgeschwindigkeit geworden. Redis ist ein Open-Source-In-Memory-Datenspeicher, der häufig in den Bereichen Cache, Sitzungsverwaltung, Warteschlangen und anderen Bereichen verwendet wird. In diesem Artikel wird erläutert, wie Sie Redis über Spring Boot integrieren, um die Cache- und Sitzungsverwaltung zu implementieren, und den Lesern dabei helfen, die Redis-Technologie besser zu verstehen und anzuwenden.

1. Einführung in Redis

Redis (Remote Dictionary Server) ist ein speicherbasierter Datenstrukturserver, der als Cache, Datenbank, Nachrichten-Middleware und andere Aspekte verwendet werden kann. Redis unterstützt mehrere Arten von Datenstrukturen, einschließlich Zeichenfolgen, Hashes, Listen, Mengen, geordnete Mengen usw., und bietet eine umfangreiche API-Schnittstelle zur Unterstützung der verteilten Bereitstellung, Master-Slave-Replikation und anderer Funktionen. In Bezug auf das Caching kann Redis Hochgeschwindigkeits- und hochverfügbare Datenlesedienste bereitstellen und so die Systemleistung und Reaktionsgeschwindigkeit erheblich verbessern.

2. Spring Boot integriert Redis

Spring Boot ist ein Framework für die schnelle Erstellung von Anwendungen, das uns dabei helfen kann, schnell Webanwendungen, REST-APIs, Microservices und andere Arten von Anwendungen zu erstellen. Spring Boot bietet einen umfangreichen Plug-in- und Erweiterungsmechanismus, der zahlreiche Komponenten und Tools von Drittanbietern problemlos integrieren kann. Für die Integration von Redis bietet Spring Boot zwei Implementierungsmethoden: Spring Data Redis und Lettuce, die je nach Bedarf ausgewählt und konfiguriert werden können.

  1. Verwenden Sie Spring Data Redis, um Redis zu integrieren

Spring Data Redis ist ein Erweiterungsmodul von Spring Data, das Redis-basierten Datenzugriff und -vorgänge unterstützen kann. Spring Data Redis bietet ein einfaches, konsistentes und benutzerfreundliches Programmiermodell, das uns dabei helfen kann, schnell auf Redis zuzugreifen und es zu betreiben. Das Folgende ist ein Beispielcode für die Integration von Redis mithilfe von Spring Data Redis:

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
}

Im obigen Beispiel aktivieren wir die Spring-Cache-Unterstützung über die Annotationen @Configuration und @EnableCaching und erstellen eine Instanz von RedisTemplate über die Annotationen @Bean. RedisTemplate ist die von Spring Redis bereitgestellte Kernklasse für den Zugriff auf Redis. Sie kann Eigenschaften wie Verbindungsfabriken und Schlüsselwert-Serialisierer festlegen.

  1. Integrieren Sie Redis mit Lettuce

Lettuce ist ein Hochleistungs-Client für Redis, der asynchrone und synchrone Vorgänge unterstützt und so mehr Funktionsoptionen und bessere Skalierbarkeit bietet. Das Designziel von Lettuce besteht darin, eine leistungsstarke, hochverfügbare und benutzerfreundliche Redis-Zugriffslösung bereitzustellen. Das Folgende ist ein Beispielcode für die Integration von Redis mit Lettuce:

@Configuration
public class RedisConfig {

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

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

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

    @Value("${spring.redis.database}")
    private int database;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(host);
        redisStandaloneConfiguration.setPort(port);
        redisStandaloneConfiguration.setDatabase(database);
        redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
        lettuceConnectionFactory.afterPropertiesSet();
        return lettuceConnectionFactory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
}

Im obigen Beispiel haben wir eine RedisConfig-Klasse über die Annotation @Configuration definiert und die Hostadresse, Portnummer, das Passwort und die Datenbank von Redis in der Konfigurationsdatei extrahiert die @Value-Annotation-Nummer und andere Informationen. Anschließend haben wir über die Annotation @Bean eine Instanz von RedisConnectionFactory erstellt und die Redis-Verbindungsinformationen und Authentifizierungsinformationen über RedisStandaloneConfiguration festgelegt. Schließlich wird beim Erstellen von RedisTemplate eine Instanz von RedisConnectionFactory eingefügt.

3. Anwendung von Redis in der Cache- und Sitzungsverwaltung

Nach der Integration von Redis über Spring Boot können wir Redis in Cache- und Sitzungsverwaltungsszenarien anwenden, um die Leistung und Verfügbarkeit des Systems weiter zu verbessern.

  1. Anwendung von Redis im Cache

In Webanwendungen kann uns das Zwischenspeichern von Daten dabei helfen, die Systemleistung und Reaktionsgeschwindigkeit zu verbessern und den Datenbankdruck und die Reaktionszeit zu reduzieren. Als Hochgeschwindigkeits-Speicherdatenspeicher eignet sich Redis sehr gut für den Einsatz als Cache-Speicher. Durch bestimmte Geschäftsszenarien im System können wir die Daten, die zwischengespeichert werden müssen, in Redis speichern und die Cache-Ablaufzeit festlegen, um die optimale Erfahrung und Leistung der Daten zu erzielen.

@Service
public class UserService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Autowired
    UserDao userDao;

    @Cacheable(value = "user", key = "#id", unless="#result == null")
    public User getUserById(String id) {
        User user = (User) redisTemplate.opsForValue().get(id);
        if(null == user){
            user = userDao.getUserById(id);
            redisTemplate.opsForValue().set(id, user, 30, TimeUnit.MINUTES);
        }
        return user;
    }

    @CachePut(value = "user", key = "#user.id")
    public User updateUser(User user){
        userDao.updateUser(user);
        return user;
    }

    @CacheEvict(value = "user", key = "#id")
    public void deleteUser(String id){
        userDao.deleteUser(id);
    }
}

Im obigen Beispiel haben wir eine UserService-Klasse definiert, eine RedisTemplate-Instanz über @Autowired eingefügt und die Annotationen @Cacheable, @CachePut und @CacheEvict verwendet, um Vorgänge wie das Lesen, Aktualisieren und Löschen zwischengespeicherter Daten einzurichten. Wenn bei der Get-Operation die erforderlichen Daten nicht in Redis vorhanden sind, werden sie aus der Datenbank abgefragt und die abgefragten Ergebnisse werden mit einer Ablaufzeit von 30 Minuten in Redis gespeichert.

  1. Einsatz von Redis in der Sitzungsverwaltung

Die Sitzungsverwaltung ist ein wichtiger Bestandteil von Webanwendungen und von entscheidender Bedeutung für den Schutz von Benutzerinformationen und die Bereitstellung eines qualitativ hochwertigen Erlebnisses. Redis kann uns dabei helfen, eine verteilte Sitzungsverwaltung zu implementieren und Sitzungsdaten in Redis zu speichern, um die Systemverfügbarkeit und -sicherheit zu verbessern.

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1200)
public class SessionConfig {

    @Bean
    public LettuceConnectionFactory connectionFactory() {
        return new LettuceConnectionFactory();
    }

    @Bean
    public HttpSessionIdResolver httpSessionIdResolver() {
        return HeaderHttpSessionIdResolver.xAuthToken();
    }
}

Im obigen Beispiel haben wir eine SessionConfig-Klasse definiert, die Spring Session-Unterstützung über die Annotation @EnableRedisHttpSession aktiviert und eine Instanz von LettuceConnectionFactory über die Annotation @Bean erstellt. Mit der @Bean-Methode können wir die Redis-Verbindungsfabrik entsprechend unseren eigenen Anforderungen konfigurieren und initialisieren. Beim Erstellen einer HttpSession speichert Spring Session die Sitzungsdaten in Redis statt im lokalen Speicher, um Sitzungsverluste und eine Verschlechterung der Verfügbarkeit zu vermeiden.

4. Zusammenfassung

Redis ist ein Hochleistungs-Cache- und Datenspeichersystem, das in verschiedenen Anwendungsszenarien weit verbreitet ist. Durch die Integration von Spring Boot können wir Redis problemlos auf Caching und Sitzungsverwaltung anwenden, um die Leistung und Verfügbarkeit von Webanwendungen zu verbessern. In diesem Artikel werden zwei Möglichkeiten für Spring Boot zur Integration von Redis und die Anwendung von Redis in Caching und Sitzungsverwaltung kurz vorgestellt. Ich hoffe, dass er den Lesern hilfreich sein wird.

Das obige ist der detaillierte Inhalt vonSpring Boot integriert Redis, um Caching und Sitzungsverwaltung zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn