Heim >Java >javaLernprogramm >Spring Boot integriert Redis, um Caching und Sitzungsverwaltung zu implementieren
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.
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.
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.
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.
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!