Redis会员的到期时间

时间:2016-10-12 10:30:37

标签: java redis jedis

我正在使用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"); 

1 个答案:

答案 0 :(得分:1)

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

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

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>