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.
-
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
-
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
-
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)).