Redis mit Spring Boot
In diesem Beitrag werden wir Redis diskutieren , Redis ist eine Key-Value-basierte NoSQL-Datenbank, die für mehrere Zwecke verwendet werden kann. Es ist Open Source und ein InMemory-Datenstrukturspeicher. Weil Redis alle grundlegenden Datenstrukturen wie Liste, Menge, Karte und sortierte Menge unterstützt.
Mit Redis können wir verschiedene Arten von Anwendungen entwickeln, wie Chat-Anwendungen, Sitzungsspeicheranwendungen, Gaming-Dashboards usw.
Wenn Sie Redis lernen möchten, verstehen Sie zunächst die verschiedenen Datenstrukturen, die Redis unterstützt, abgesehen von den Befehlen, mit denen wir Daten von Redis speichern und abrufen können.
Einige wichtige Befehle
Redis unterstützt String, Set, Sorted Set, List und HashMap als Schlüsselwerte. Nachfolgend finden Sie einige grundlegende Befehle, um ein Verständnis für verschiedene Datenstrukturen zu erhalten.
String
SET foo bar (foo is key, bar is value)
GET foo
bar
HashMap
HMSET student name: "shubham" age: 25
HGETALL student
List
LPUSH product car
LPUSH product bike
LRANGE product 0 10
Set
SADD product car
SADD product bike
SMEMBERS product
Anwendungsfälle von Redis
- Redis kann als Key-Value-basierte NoSQL-Datenbank verwendet werden.
- Redis kann als Cache-Anbieter verwendet werden.
- Redis kann als Herausgeber und Abonnent verwendet werden, was in der Ereignisverarbeitung verwendet wird.
- Redis kann als Sitzungsspeicher verwendet werden.
- Redis kann in Chat-Anwendungen verwendet werden.
Wenn Sie also nach dem Lesen dieses Artikels Interesse bekommen und jetzt ein paar praktische Übungen mit Redis machen möchten, richten Sie den Redis-Server in Ihrem System ein.
- Installieren Sie Homebrew in Ihrem System, falls nicht vorhanden.
- Die folgenden Befehle nacheinander ausführen
brew install redis
After succesfull installation
brew services start redis
After starting redis if you want to try above commands
redis-cli
To test whether redis server is working
PING
If yu get PONG then its connected
If you want to monitor which all commands are getting executed on redis
redis-monitor
Wenn Sie also Redis von einem anderen System aus verwenden möchten, benötigen Sie einen Client, der mit dem Redis-Server interagiert.
In diesem Teil werden wir nun sehen, wie wir Redis mit Spring Boot verwenden und als NoSQL-DB verwenden können.
Konfiguration
Der erste Schritt besteht darin, ein Beispiel-Spring-Boot-Projekt aus spring initializer zu erstellen und spring-boot-starter-data-redis abhängigkeit hinzuzufügen .
Nachdem Sie das Projekt nun in Ihre bevorzugte IDE importiert haben, erstellen Sie Pakete und Klassen.
Die erste Klasse wird für die Konfiguration sein. Wir haben zwei Treiber für Redis, einer ist Jedis, der andere ist Salat (Er wird träge initialisiert und ist auch leistungsmäßig besser.)
Abgesehen vom Treiber benötigen wir eine Vorlage für Operationen auf dem Redis-Server, ähnlich wie wir RestTemplate für Restoperationen haben.
package com.redisexample.redisdemo.config;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
//@EnableRedisRepositories
public class AppConfig {
//There are two ways of creating driver, one is jedis another is lettuce,
//lettuce is bit lazy in intialization so it creates beans lazily
//It is using default host and port
@Bean
RedisConnectionFactory jedisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new JdkSerializationRedisSerializer());
template.setValueSerializer(new JdkSerializationRedisSerializer());
template.setEnableTransactionSupport(true);
template.afterPropertiesSet();
return template;
}
//For setting host and port
// @Bean
// JedisConnectionFactory jedisConnectionFactory() {
// JedisConnectionFactory jedisConFactory
// = new JedisConnectionFactory();
// jedisConFactory.setHostName("localhost");
// jedisConFactory.setPort(6379);
// return jedisConFactory;
// }
}
Erstellen Sie eine Entitätsklasse
@RedisHash("student") // this is a set so we can use set command to see data via redis cli
public class Student {
public enum Gender {
MALE, FEMALE
}
private Long id;
private String name;
private int age;
private String city;
//getters and setters
}
@Repository
public interface StudnetRepo extends CrudRepository<Student, Long> {
}
package com.redisexample.redisdemo.controller;
import com.redisexample.redisdemo.model.Student;
import com.redisexample.redisdemo.repo.StudnetRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
private StudnetRepo studnetRepo;
@PostMapping
public void saveStudent(@RequestBody Student student){
studnetRepo.save(student);
}
@GetMapping
public Iterable<Student> getStudent(){
return studnetRepo.findAll();
}
}
Dies ist also ein einfaches Beispiel für die Verwendung von Redis als DB mit einer Spring-Boot-Anwendung.
Im nächsten Beitrag werden wir sehen, wie man Redis als Cache-Provider verwendet.
Danke fürs Lesen!!

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































