Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

definir a expiração dos valores do Hashmap no Redis?


Não, você não pode criar hash com SETEX (que é um método de strings). Você pode chamar EXPIRE na chave de hash, mas isso expirará todo o hash. Não há suporte no momento para expiração de pares de chave/valor de hash individuais.

Atualização:


Se você quiser definir a expiração de todo o hash ao definir seus elementos individuais, poderá fazer isso de várias maneiras.

  1. Use tubulação. Pipelining é um modo especial de operação em que o cliente redis emite vários comandos em rápida sucessão, sem esperar uma resposta para enviar o próximo. Aqui está um exemplo em ruby:
    redis.pipelined do
      redis.hset "foo", "bar", 1
      redis.expire "foo", 300
    end
    

  2. Usar transações. Sem chaves monitoradas, isso é semelhante ao pipeline (pois uma transação não pode ser abortada). Os comandos são garantidos para serem executados juntos e atomicamente (vários pipelines podem ser executados intercalados, as transações são serializadas)
    redis.multi do
      redis.hset "foo", "bar", 1
      redis.expire "foo", 300
    end
    

  3. Use o script lua para implementar seu comando HSETEX personalizado. Ele será executado atomicamente e você só precisa enviar um comando (em vez de 2 (pipelining) ou 4 (transação)).