Como Expirar Chaves no Redis

Introdução

O Redis é um datastore ou armazenamento de dados open-source de chave-valor na memória. As chaves Redis são persistentes por padrão, o que significa que o servidor Redis continuará armazenando-as, a menos que sejam excluídas manualmente. No entanto, pode haver casos em que você definiu uma chave, mas você sabe que deseja excluí-la após um certo período de tempo; em outras palavras, você deseja que a chave seja volátil. Este tutorial explica como definir as chaves para expirarem, verificar o tempo restante até a expiração de uma chave e cancelar a configuração de expiração de uma chave.

Como Utilizar Este Guia

Este guia está no formato de referência rápida com trechos de linha de comando independentes. Recomendamos que você pule para qualquer seção que seja relevante para a tarefa que você está tentando concluir.

Os comandos mostrados neste guia foram testados em um servidor Ubuntu 18.04 executando a versão 4.0.9 do Redis. Para configurar um ambiente semelhante, você pode seguir o Passo 1 do nosso guia Como Instalar e Proteger o Redis no Ubuntu 18.04. Vamos demonstrar como esses comandos se comportam executando-os com redis-cli, a interface de linha de comando do Redis. Observe que se você estiver usando uma interface Redis diferente — Redli, por exemplo — a saída exata de certos comandos pode ser diferente.

Como alternativa, você pode provisionar uma instância de banco de dados Redis gerenciada para testar esses comandos, mas observe que, dependendo do nível de controle permitido pelo seu provedor de banco de dados, alguns comandos neste guia podem não funcionar como descrito. Para provisionar um banco de dados gerenciado na DigitalOcean, siga nossa documentação de produto para Managed Databases. Então, você deve instalar ou o Redli ou configurar um túnel TLS para conectar-se ao banco de dados gerenciado por TLS.

Definindo Chaves para Expirar

Você pode definir um tempo de expiração para uma chave existente com o comando expire, que pega o nome da chave e o número de segundos até a expiração como argumentos. Para demonstrar isso, execute os dois comandos a seguir. O primeiro cria uma chave de string chamada key_melon com um valor de "cantaloupe", e o segundo a define para expirar após 450 segundos:

  • set key_melon "cantaloupe"
  • expire key_melon 450

Se o tempo limite foi definido com sucesso, o comando expire retornará (integer) 1. Se a configuração de tempo limite falhar, ele retornará (integer) 0.

Como alternativa, você pode definir a chave para expirar em um momento específico com o comando expireat. Em vez do número de segundos antes da expiração, ele precisa de um Unix timestamp ou registro de data e hora como argumento. Um Unix timestamp é o número de segundos desde a Unix epoch ou 00:00:00 UTC em 1 de janeiro de 1970. Há várias ferramentas on-line que você pode usar para encontrar o Unix timestamp de uma data e hora específicas, como o EpochConverter ou o UnixTimestamp.com.

Por exemplo, para definir key_melon para expirar às 20:30 GMT em 1º de maio de 2025 (representado pelo Unix timestamp 1746131400), você poderia usar o seguinte comando:

  • expireat key_melon 1746131400

Observe que se o timestamp passado para o expireat já tiver ocorrido, ele excluirá a chave imediatamente.

Verificando Quanto Tempo Até uma Chave Expirar

Sempre que você definir uma chave para expirar, poderá verificar o tempo restante até a expiração (em segundos) com o ttl, que significa “time to live” ou tempo de vida:

  • ttl key_melon
Output(integer) 433 

Para informações mais detalhadas, você pode executar o pttl, que retornará a quantidade de tempo até que uma chave expire em milissegundos:

  • pttl key_melon
Output(integer) 431506 

Ambos, ttl e pttl retornarão (integer) -1 se a chave não tiver sido configurada para expirar e (integer) -2 se a chave não existir.

Chaves Persistentes

Se uma chave foi configurada para expirar, qualquer comando que sobrescreva o conteúdo de uma chave — como set ou getset — limpará o valor de tempo limite da chave. Para limpar manualmente o tempo limite de uma chave, use o comando persist

  • persist key_melon

O comando persist retornará (integer) 1 se concluído com êxito, indicando que a chave não expirará mais.

Conclusão

Este guia detalha vários comandos usados para manipular e verificar a persistência de chave no Redis. Se houver outros comandos, argumentos ou procedimentos relacionados que você gostaria de ver descritos neste guia, peça ou faça sugestões nos comentários abaixo.

Para obter mais informações sobre comandos Redis, consulte nossa série de tutoriais Como Gerenciar um Banco de Dados Redis.