Redis getEx

Redis getEx
Redis é um armazenamento de dados de valor-chave usado como cache na memória, banco de dados, série temporal, mecanismo de fluxo, corretor de mensagens, etc. Como o Redis Data Store usa um formato simples de par de valores-chave para conter dados, é muito eficiente em termos de memória. Além disso, a velocidade de consulta é muito alta, com complexidades de baixo tempo como O (1) e O (log (n)). As teclas Redis podem conter diferentes estruturas de dados, como seqüências, conjuntos, hashes, conjuntos classificados e listas.

Geralmente, os comandos Get e Set são usados ​​para armazenar e recuperar valores do tipo string armazenados em uma determinada chave Redis. Esses dois comandos operam com complexidade de tempo constante.

Além disso, o comando getEx está disponível para ler valores de string armazenados em uma determinada chave. Mas este comando está associado a uma operação de gravação paralela também. Este guia se concentrará na sintaxe do comando getex, em suas opções e casos de uso.

Ttl de uma chave Redis

O valor do tempo para viver (TTL) é o tempo de expiração de uma determinada peça de dados. Geralmente, um TTL pode ser associado a linhas de banco de dados. Um tempo limite pode ser definido com as teclas Redis também. Portanto, um cliente Redis pode verificar os segundos restantes se uma determinada chave estará disponível no armazenamento de dados. Redis oferece um comando ttl para verificar o tempo para o valor vivo de uma determinada chave. Se nenhum tempo limite estiver associado a uma chave especificada, o comando ttl retornará -1. Usaremos o comando ttl nas próximas seções para verificar o tempo restante de uma determinada chave.

O comando getEx

Conforme destacado, o comando getEx é mais semelhante ao comando get, exceto que pode ser usado para definir um tempo de expiração para a chave especificada. Além disso, uma opção de comando pode remover um valor de tempo limite de uma determinada chave. A sintaxe do comando getEx é a seguinte:

Getex key [ex timeout_in_seconds | Px timeout_in_millisEconds | Exat timeout_in_unix-time-segundos | Pxat timeout_in_unix-time-milisEconds | PERSISTIR]

chave: Esta é a chave que aponta para um valor de string.

Os seguintes argumentos opcionais podem ser usados ​​para definir um tempo limite em segundos ou milissegundos.

EX: Isso definirá o tempo de expiração em segundos para uma determinada chave.

PX: O principal valor do tempo limite será definido em milissegundos.

Além disso, podemos especificar um valor de timestamp Unix em segundos ou milissegundos usando as seguintes opções de comando Exat e Pxat:

Exat: O tempo de validade será definido no formato do timestamp Unix, e o registro de data e hora estará em segundos.

Pxat: O tempo limite para uma determinada chave Redis será definida como um registro de data e hora do Unix em milissegundos.

PERSISTIR: Ao especificar isso, você pode remover o tempo para viver o valor associado a uma chave especificada.

O comando getEx retorna o valor da chave especificada. Este comando funciona apenas com valores do tipo string, mas não hashes, listas, conjuntos classificados, etc. Se você especificar uma chave associada a um valor sem cordão, o comando retornará um erro. Além disso, se a chave já estiver expirada ou não existir, o comando retornará nada.

Na seção a seguir, abordaremos o uso prático do comando getEx.

Caso de uso - link de redefinição temporária ou geração de código PIN para recuperação de senha/OTPS

Uma empresa de hospedagem na web está fornecendo um recurso de recuperação de senha para usuários registrados. Como medida de segurança, eles enviam um novo link de URL para o usuário, que expirará dentro de 5 minutos. A empresa usa o Redis Data Store há muito tempo e usa o comando getEx para definir um tempo para viver valor para um determinado usuário.

Vamos supor que um usuário com user_id 1000 solicite uma recuperação de senha. Portanto, o URL de recuperação pode ser armazenado na chave Recuperação: UserID: 1000. Podemos usar o comando set para armazenar o URL de recuperação da seguinte forma:

Definir recuperação: UserID: 1000 "https: // abc.com/recuperação/userID = 1000, key = sdfiuoe3290e9rjs "

Vamos verificar se o URL da string está devidamente armazenado na chave Recuperação: UserID: 1000. Podemos usar o comando getEx da seguinte maneira:

getEx recuperurl: userID: 1000

A saída do comando anterior é mostrada no seguinte:

Se usamos o comando get em vez do comando getEx, a saída será a mesma.

Vamos usar o comando ttl para verificar se um tempo de validade está associado a esta chave.

TTL Recuperação: UserID: 1000

Como esperado, o -1 foi devolvido pelo comando ttl, o que significa que nenhum tempo de validade está associado à chave especificada.

De acordo com este exemplo, a empresa de hospedagem precisa definir um tempo limite de 5 minutos para o URL de recuperação. Então, estaremos usando o EX opção de comando. Como 5 minutos é de 300 segundos, podemos construir o comando getEx da seguinte forma:

getEx recuperurl: userID: 1000 ex 500

Vamos executar o comando ttl algumas vezes para inspecionar o tempo restante em que a chave existirá no armazenamento de dados.

Como esperado, o tempo está diminuindo e, eventualmente, o Recuperação: UserID: 1000 A chave será removida. A seguir, é apresentada a saída após 5 minutos:

O -2 foi devolvido pelo comando, o que significa que a chave é expirada e excluída do armazenamento de dados.

Às vezes, pode ser necessário remover o valor do tempo limite associado a uma determinada chave. Portanto, a opção Persist Command pode ser usada para excluir um valor TTL relacionado a uma chave especificada.

Vamos criar outra chave de amostra e atribuir um valor de string a ela. Nesse caso, especificaremos o valor TTL em milissegundos, passando pelo Px opção.

Definir KeyToTestPersist "Isso será expirado em 60 segundos" PX 50000

Em seguida, verificaremos o tempo restante da seguinte maneira:

Como esperado, o TTL está diminuindo. Vamos chamar o comando getEx com a opção Persist da seguinte maneira:

GetEx keytotestpersist persiste

Idealmente, isso removeria o TTL associado a esta chave. Vamos inspecionar o TTL para a chave KeyToTestPersist.

O comando ttl retornou o -1, o que significa que nenhum TTL está associado à chave KeyToTestPersist.

Da mesma forma, o GetEx O comando pode ser usado para definir o tempo de expiração para as chaves no timestamp unix.

Conclusão

Em resumo, o comando Redis getEx pode ser usado para recuperar os valores da string armazenados em uma determinada chave como o comando get. A única diferença com o comando getEx é que ele suporta definir e remover os tempos de validade para uma determinada chave. Ele suporta vários argumentos opcionais para especificar o tempo de validade em segundos, milissegundos e unix-timestamp segundos ou milissegundos. Conforme discutido, o comando fornece a opção persistente para remover o TTL associado para uma determinada chave. No geral, o comando getEx opera com complexidade de tempo constante.