Ejercicio: Creación de una aplicación de Spring Boot que usa Spring Data Redis

Completado

En esta unidad, creará una aplicación de Spring Boot que usa Spring Data Redis para almacenar y recuperar datos de Azure Cache for Redis. Puede crear la aplicación, salvo por la última conexión a Azure Cache for Redis, mientras espera a que la instancia de Azure Cache for Redis finalice la implementación.

Creación del proyecto de Spring Boot

Para crear el proyecto de Spring Boot, ejecute la línea de comandos Spring Initializr siguiente:

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 -

Nota

El comando usa los componentes Spring Web y Spring Data Redis. Spring Data Redis utiliza el controlador de Redis Lettuce, que también puede usar para tareas más avanzadas.

Incorporación de código de Spring para administrar datos

  1. En el proyecto de Spring Boot, junto a la clase DemoApplication, agregue un objeto de dominio Todo de la siguiente manera:

    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. Cree un repositorio de Spring Data Redis denominado TodoRepository para administrar esta colección, como se indica a continuación:

    package com.example.demo;
    
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface TodoRepository extends CrudRepository<Todo, String> {
    
    }
    
  3. Agregue un controlador de Spring MVC con el nombre TodoController, de la manera siguiente:

     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();
        }
    }
    

Obtención de claves de seguridad de Azure Cache for Redis

  1. Ejecute el siguiente comando para comprobar si la instancia de Azure Cache for Redis está lista para usarse.

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

    El comando devuelve datos JSON que contienen un atributo provisioningState. Cuando provisioningState tiene el valor Succeeded, la instancia de Azure Cache for Redis está totalmente disponible.

    Sugerencia

    Si tiene la utilidad jq, puede usar la siguiente línea de comandos única para comprobar la preparación:

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
    
  2. Cuando la instancia de Azure Cache for Redis esté lista, ejecute el siguiente comando para recuperar sus claves de seguridad:

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

    Copie el valor primaryKey de la salida que se usará en el paso siguiente.

Configuración de Spring Boot para conectarse a Azure Cache for Redis

Abra el archivo de configuración src/main/resources/application.properties en la aplicación y agregue las siguientes propiedades. Reemplace el marcador de posición <redisName> por el nombre de la instancia de Redis, y el marcador de posición <redisPrimaryKey> por el valor primaryKey que obtuvo del paso anterior.

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

Prueba de la aplicación de forma local

  1. Ejecute la aplicación de Spring Boot, ya sea mediante el ejecutable DemoApplication en el entorno de desarrollo o el complemento Spring Boot de Maven de la siguiente manera:

    ./mvnw spring-boot:run
    
  2. Con la aplicación en ejecución, almacene algunos datos en Redis mediante el siguiente comando:

    curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
    
  3. Ahora recupere esos datos de Redis:

    curl http://127.0.0.1:8080
    

Vaya a la siguiente unidad para obtener información sobre cómo usar Azure Cache for Redis para almacenar datos de sesión HTTP mediante Spring Session.