197 votes

Comment "EXPIRE" la clé enfant "HSET" dans redis ?

J'ai besoin d'expirer toutes les clés dans le hash redis, qui sont plus vieux que 1 mois.

0voto

Jonathan Kim Points 198

Vous le pouvez. Voici un exemple.

redis 127.0.0.1:6379> hset key f1 1
(integer) 1
redis 127.0.0.1:6379> hset key f2 2
(integer) 1
redis 127.0.0.1:6379> hvals key
1) "1"
2) "1"
3) "2"
redis 127.0.0.1:6379> expire key 10
(integer) 1
redis 127.0.0.1:6379> hvals key
1) "1"
2) "1"
3) "2"
redis 127.0.0.1:6379> hvals key
1) "1"
2) "1"
3) "2"
redis 127.0.0.1:6379> hvals key

Utilice EXPIRE o EXPIREAT commandement.

Si vous voulez faire expirer des clés spécifiques dans le hash avant 1 mois. Ceci n'est pas possible. La commande Redis expire est pour toutes les clés dans le hash. Si vous définissez une clé de hachage quotidienne, vous pouvez définir le temps de vie d'une clé.

hset key-20140325 f1 1
expire key-20140325 100
hset key-20140325 f1 2

0voto

Vous pouvez utiliser les notifications de l'espace clé de Redis en utilisant psubscribe y "__keyevent@<DB-INDEX>__:expired" .

Avec cela, chaque fois qu'une clé expirera, vous recevrez un message publié sur votre connexion redis.

En ce qui concerne votre question, vous créez une clé temporaire "normale" en utilisant set avec un délai d'expiration en s/ms. Il doit correspondre au nom de la clé que vous souhaitez supprimer dans votre jeu.

Comme votre clé temporaire sera publiée sur votre connexion redis en détenant le code "__keyevent@0__:expired" à son expiration, vous pouvez facilement supprimer votre clé de votre jeu d'origine car le message portera le nom de la clé.

Un exemple simple en pratique sur cette page : https://medium.com/@micah1powell/utilisation-redis-keyspace-notifications-pour-un-service-de-rappel-avec-node-c05047befec3

doc : https://redis.io/topics/notifications ( cherchez le drapeau xE)

0voto

schn ran Points 1
  static async setCount(ip: string, count: number) {
    const val = await redisClient.hSet(ip, 'ipHashField', count)
    await redisClient.expire(ip, this.expireTime)
  }

Essayez d'expirer votre clé.

-3voto

Thomas John Points 498

Vous pouvez expirer Redis hash en toute simplicité, Par exemple, en utilisant python

import redis
conn = redis.Redis('localhost')
conn.hmset("hashed_user", {'name': 'robert', 'age': 32})
conn.expire("hashed_user", 10)

Cela fera expirer toutes les les clés pour enfants en dièse utilisateur_haché après 10 secondes

même chose que redis-cli,

127.0.0.1:6379> HMSET testt username wlc password P1pp0 age 34
OK
127.0.0.1:6379> hgetall testt
1) "username"
2) "wlc"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
127.0.0.1:6379> expire testt 10
(integer) 1
127.0.0.1:6379> hgetall testt
1) "username"
2) "wlc"
3) "password"
4) "P1pp0"
5) "age"
6) "34"

après 10 secondes

127.0.0.1:6379> hgetall testt
(empty list or set)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X