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