Exercício - Crie um aplicativo Spring Boot que use o Spring Data Redis

Concluído

Nesta unidade, você cria um aplicativo Spring Boot que usa o Spring Data Redis para armazenar e recuperar dados do Cache do Azure para Redis. Você pode criar o aplicativo, exceto para a conexão final com o Cache do Azure para Redis, enquanto aguarda que sua instância do Cache do Azure para Redis conclua a implantação.

Criar o projeto Spring Boot

Para criar seu projeto Spring Boot, execute a seguinte linha de comando do Spring Initializr :

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

O comando usa Spring Web e Spring Data Redis componentes. Spring Data Redis usa o driver Lettuce Redis, que você também pode usar para tarefas mais avançadas.

Adicionar código Spring para gerenciar dados

  1. Em seu projeto Spring Boot, ao lado da classe DemoApplication, adicione um objeto de domínio Todo da seguinte maneira:

    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. Crie um repositório Spring Data Redis chamado TodoRepository para gerenciar essa coleção, da seguinte maneira:

    package com.example.demo;
    
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface TodoRepository extends CrudRepository<Todo, String> {
    
    }
    
  3. Adicione um controlador Spring MVC chamado TodoController, da seguinte maneira:

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

Obter chaves de segurança do Cache do Azure para Redis

  1. Execute o seguinte comando para verificar se sua instância do Cache Redis do Azure está pronta para uso.

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

    O comando retorna dados JSON que contêm um provisioningState atributo. Quando provisioningState tiver o valor Succeeded, sua instância do Cache do Azure para Redis estará totalmente disponível.

    Gorjeta

    Se você tiver o utilitário jq , poderá usar a seguinte linha de comando única para verificar a prontidão:

    az redis show --name $AZ_REDIS_NAME --resource-group $AZ_RESOURCE_GROUP | jq '.provisioningState'
    
  2. Quando a instância do Cache do Azure para Redis estiver pronta, execute o seguinte comando para recuperar suas chaves de segurança:

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

    Copie o primaryKey valor da saída para usar na próxima etapa.

Configurar o Spring Boot para se conectar ao Cache Redis do Azure

Abra o arquivo de configuração src/main/resources/application.properties em seu aplicativo e adicione as seguintes propriedades. Substitua o espaço reservado pelo nome da instância do Redis e substitua o espaço reservado <redisName><redisPrimaryKey> pelo primaryKey valor obtido na etapa anterior.

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

Testar a aplicação localmente

  1. Execute seu aplicativo Spring Boot, executando o executável DemoApplication em seu ambiente de desenvolvimento ou executando o plug-in Spring Boot Maven da seguinte maneira:

    ./mvnw spring-boot:run
    
  2. Com o aplicativo em execução, armazene alguns dados no Redis usando o seguinte comando:

    curl -d '{"description":"a description", "details":"some details"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8080
    
  3. Agora recupere esses dados do Redis:

    curl http://127.0.0.1:8080
    

Vá para a próxima unidade para saber como usar o Cache Redis do Azure para armazenar dados de sessão HTTP por meio da Sessão de primavera.