Övning – Skapa ett Spring Boot-program som använder Spring Data Redis

Slutförd

I den här lektionen skapar du ett Spring Boot-program som använder Spring Data Redis för att lagra och hämta data från Azure Cache for Redis. Du kan skapa programmet, förutom den slutliga anslutningen till Azure Cache for Redis, medan du väntar på att din Azure Cache for Redis-instans ska slutföra distributionen.

Skapa Spring Boot-projektet

Om du vill skapa ditt Spring Boot-projekt kör du följande Spring Initializr-kommandorad :

curl https://start.spring.io/starter.tgz -d type=maven-project -d dependencies=web,data-redis -d baseDir=spring-redis-application -d bootVersion=2.4.1.RELEASE -d javaVersion=1.8 | tar -xzvf -

Kommentar

Kommandot använder Spring Web och Spring Data Redis komponenter. Spring Data Redisanvänder Lettuce Redis-drivrutinen, som du även kan använda för mer avancerade uppgifter.

Lägga till Spring-kod för att hantera data

  1. I Spring Boot-projektet, bredvid klassen DemoApplication, lägger du till ett Todo-domänobjekt på följande sätt:

    package com.example.demo;
    
    import org.springframework.data.annotation.Id;
    import org.springframework.data.redis.core.RedisHash;
    
    import java.io.Serializable;
    
    @RedisHash("Todo")
    public class Todo implements Serializable {
    
        public Todo() {
        }
    
        public Todo(String description, String details, boolean done) {
            this.description = description;
            this.details = details;
            this.done = done;
        }
    
        @Id
        private Long id;
    
        private String description;
    
        private String details;
    
        private boolean done;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    
        public String getDetails() {
            return details;
        }
    
        public void setDetails(String details) {
            this.details = details;
        }
    
        public boolean isDone() {
            return done;
        }
    
        public void setDone(boolean done) {
            this.done = done;
        }
    }
    
  2. Skapa en Spring Data Redis-lagringsplats med namnet TodoRepository för att hantera den här samlingen på följande sätt:

    package com.example.demo;
    
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface TodoRepository extends CrudRepository<Todo, String> {
    
    }
    
  3. Lägg till en Spring MVC-styrenhet med namnet TodoController enligt följande:

     package com.example.demo;
    
    import org.springframework.http.HttpStatus;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("/")
    public class TodoController {
    
        private final TodoRepository todoRepository;
    
        public TodoController(TodoRepository todoRepository) {
            this.todoRepository = todoRepository;
        }
    
        @PostMapping("/")
        @ResponseStatus(HttpStatus.CREATED)
        public Todo createTodo(@RequestBody Todo todo) {
            return todoRepository.save(todo);
        }
    
        @GetMapping("/")
        public Iterable<Todo> findAllTodos() {
            return todoRepository.findAll();
        }
    }
    

Hämta Säkerhetsnycklar för Azure Cache for Redis

  1. Kör följande kommando för att kontrollera om din Azure Cache for Redis-instans är redo att användas.

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP
    

    Kommandot returnerar JSON-data som innehåller ett provisioningState attribut. När provisioningState har värdet Succeededär Din Azure Cache for Redis-instans helt tillgänglig.

    Dricks

    Om du har jq-verktyget kan du använda följande enda kommandorad för att kontrollera beredskapen:

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
    
  2. När Azure Cache for Redis-instansen är klar kör du följande kommando för att hämta dess säkerhetsnycklar:

    az redis list-keys \
        --resource-group $AZ_RESOURCE_GROUP \
        --name $AZ_REDIS_NAME
    

    Kopiera värdet primaryKey från utdata som ska användas i nästa steg.

Konfigurera Spring Boot för att ansluta till Azure Cache for Redis

Öppna konfigurationsfilen src/main/resources/application.properties i ditt program och lägg till följande egenskaper. <redisName> Ersätt platshållaren med ditt Redis-instansnamn och ersätt <redisPrimaryKey> platshållaren med det primaryKey värde som du fick från föregående steg.

spring.redis.host=<redisName>.redis.cache.windows.net
spring.redis.password=<redisPrimaryKey>
spring.redis.port=6380
spring.redis.ssl=true

Testa appen lokalt

  1. Kör ditt Spring Boot-program, antingen genom att köra den körbara DemoApplication i utvecklingsmiljön eller genom att köra Plugin-programmet Spring Boot Maven på följande sätt:

    ./mvnw spring-boot:run
    
  2. När programmet körs lagrar du vissa data i Redis med hjälp av följande kommando:

    curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
    
  3. Hämta nu dessa data från Redis:

    curl http://127.0.0.1:8080
    

Gå vidare till nästa enhet för att lära dig hur du använder Azure Cache for Redis för att lagra HTTP-sessionsdata via Spring Session.