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