Redis中成员的过期时间

Expiry time for member in Redis

我正在使用 Jedis 客户端在 Redis 中存储地理坐标。

有没有办法在Redis中设置成员的过期时间?我知道,我可以设置密钥的过期时间。

例如,我在下面添加了三个坐标,现在我想在 10 秒后使 "Bahn" 成员过期。

redis.geoadd(key, 8.6638775, 49.5282537, "Weinheim"); 
redis.geoadd(key, 8.3796281, 48.9978127, "EFS9");
redis.geoadd(key, 8.665351, 49.553302, "Bahn"); 

在幕后,GEOADD 使用 ZSET 来存储其数据。

您可以在第二个 ZSET 中存储相同的数据(没有地理定位),这次使用 unix 时间戳作为分数,使用常规的 ZADD 命令。

ZADD expirationzset <expiration date> <data> 

您可以从第二个ZSET中获取过期数据,使用

ZRANGEBYSCORE expirationzset -inf <current unix timestamp>

然后你必须从两个 ZSET 中删除它们,使用 ZREM 作为地理定位 ZSET,使用 ZREMRANGEBYSCORE 作为到期 zset:

ZREM geolocationzset <expired_data1> <expired_data3> <expired_data3>...
ZREMRANGEBYSCORE expirationzset -inf <current unix timestamp>