Redis expire a chave de hash

Redis expire a chave de hash

Redis Hashes é um tipo especial de tipo de dados que é muito mais parecido com o objeto JSON, o hashmap java ou um dicionário python. Além disso, é uma coleção de pares de valor de campo que podem ser usados ​​para modelar objetos de domínio. Redis Hash Data Structure é extremamente eficiente em memória, onde cada chave de hash pode armazenar até quatro bilhões de pares de valor de campo. Mais importante ainda, as operações fundamentais de hash como HSET, HGET, HMGET, etc. operar com complexidade de tempo constante.


Redis Hash Keys tem um tempo infinito para viver (TTL), o que significa que eles são persistentes que são excluídos explicitamente usando comandos como del. Neste artigo, focaremos em definir o TTL para Redis Hashes usando o comando Expire.

Redis Expire Comando

O comando Expire é usado para definir um tempo limite em uma determinada chave de um hash Redis, conjunto, lista, etc. A chave Redis é excluída do banco de dados se o tempo limite expirar. O mais importante, o tempo limite não é esclarecido até que o conteúdo da chave seja excluído ou substituído. Alterar os valores associados a uma chave não afeta o tempo de validade.

A sintaxe do comando Expire é a seguinte:

Expire Key Expiry_time_seconds [nx | Gx | Gt | LT]


chave: A chave do hash, lista ou conjunto de que você precisa definir um tempo limite.

expirty_time_seconds: O valor do tempo limite em segundos.

Vários argumentos opcionais são aceitos pelo comando expire.

NX: O valor do tempo limite é definido apenas se a chave especificada já tiver expiração.

Xx: Quando a chave especificada tem um valor de tempo limite existente, o novo vencimento é definido.

GT: Se o novo valor do tempo limite for maior que o existente, o novo vencimento será definido.

LT: O novo valor do tempo limite é definido se o existente for maior que o novo.

Mais importante ainda, o comando expire opera com complexidade constante de tempo. O número inteiro 1 é retornado se a execução do comando for bem -sucedida. Se a operação falhar devido a argumentos errados ou chaves inexistentes, 0 será retornado.

Usaremos o comando Expire on Hashes para definir um tempo de validade, como mostrado na seção a seguir:

Expire Redis Hash usando o comando Expire

Vamos supor que uma informação de sessão por usuário seja armazenada em um hash redis Sessão: ID: 1000: Usuário: 10. Podemos usar o comando hmset para criar um hash redis com vários pares de valor de campo da seguinte forma:

Sessão HMSET: ID: 1000: Usuário: 10 Nome de usuário "Jae" Cookie "Sim" Senha "389ysu2"


Vamos inspecionar o hash criado usando o comando hgetall.

Sessão HGETALL: ID: 1000: Usuário: 10



Além disso, a sessão expira após 10 segundos se o usuário estiver ocioso por mais de 60 segundos. A expiração da sessão é alcançada definindo o tempo de expiração para o hash que armazena as informações da sessão.

Podemos usar o comando Expire da seguinte forma:

Expire Sessão: ID: 1000: Usuário: 10 10


Como mencionado, o valor do tempo limite é definido como 10 segundos.


Como esperado, o valor de retorno é 1, o que significa que o TTL é definido com sucesso para o hash. Vamos verificar o tempo restante antes que a chave do hash seja removida da loja Redis. O comando ttl pode ser usado da seguinte forma:

TTL Sessão: ID: 1000: Usuário: 10



Como mostrado na saída, três segundos são deixados antes de remover o hash automaticamente. Após 10 segundos, a saída do comando TTL é a seguinte:


Como a resposta inteira -2 é indicada, o hash não existe.

Defina o tempo limite com base na existência de um tempo de validade

O comando Expire aceita argumentos NX e XX para definir um novo tempo limite com base na existência de expiração para um hash especificado. Vamos criar um novo hash com o Noteout chave.

Nome do Noteout do HMSET "Teste"


Vamos tentar definir um novo vencimento para o hash anterior. Além disso, passamos o argumento xx para o comando expire também.

Expire Noteout 15 xx


Já que especificamos o Xx opção no comando, o tempo de expiração não será definido. A opção XX não permite que você defina um novo tempo de expiração se não houver tempo limite existente associado à chave de hash especificada.


Se usarmos o Nx opção, o valor do tempo limite é definido como 15.

Expire Noteout 15 nx



O comando expire retorna a resposta inteira 1, o que significa que o tempo limite é definido corretamente.

Defina o tempo limite com base no valor do tempo limite existente

As opções de GT e LT podem ser usadas para definir o tempo de expiração do hash com base no comprimento do tempo limite existente.

Vamos criar um novo hash chamado hashwithtimeout.

hmset hashWithtimeout Field1 Value1


Em seguida, estabelecemos um tempo de vencimento de 200 segundos para o hash.

Expire Hashwithtimeout 200


Vamos tentar definir um novo tempo limite de 100 segundos para o hash junto com a opção GT da seguinte maneira:

expire hashwithtimeout 100 gt


Como a opção GT foi especificada, o comando Expire verificará se o novo valor do tempo limite é maior que o existente e definirá o novo tempo de vencimento. Neste exemplo, o novo tempo limite não é maior que o tempo limite existente. Portanto, o comando não definirá o novo tempo de expiração e 0 será devolvido.


Vamos usar a opção LT em vez de gt. Como o novo tempo de validade é menor que o atual, o comando a seguir deve definir com sucesso o novo tempo limite.

expire hashwithtimeout 100 lt


Conclusão

Em resumo, o comando Redis Expire é usado para definir um valor TTL para uma determinada chave. Por padrão, as chaves de hash Redis não estão associadas a nenhum tempo limite que seja chamado de não volátil. Conforme discutido, o comando expire é usado para definir um valor de tempo limite no hash redis. Geralmente, o hash é excluído do armazenamento de dados Redis após a quantidade de tempo especificado como um valor de tempo limite. Como mostrado nos exemplos, o comando Expire aceita alguns argumentos opcionais como XX, NX, GT e LT para definir o vencimento do hash com base em uma condição.