【发布时间】:2016-04-16 21:38:42
【问题描述】:
我在 Redis 上使用地理支持。
以这种方式添加新的地理位置:
"GEOADD" "report-geo-set" "30.52439985197" "50.56539003041" "john"
我想在 X 小时后使报告地理集中的 john 密钥过期。
有什么建议吗?
谢谢, 射线。
【问题讨论】:
标签: java redis geolocation maps
我在 Redis 上使用地理支持。
以这种方式添加新的地理位置:
"GEOADD" "report-geo-set" "30.52439985197" "50.56539003041" "john"
我想在 X 小时后使报告地理集中的 john 密钥过期。
有什么建议吗?
谢谢, 射线。
【问题讨论】:
标签: java redis geolocation maps
无法使用内置命令。请记住,基于 zset 的地理支持,您的问题类似于“如何在 ZSET 中为单个键使用 TTL”。
你可以使用类似的东西:
给定建议的示例。添加项目:
MULTI
GEOADD report-geo-set 30.52439985197 50.56539003041 john
ZADD geo-timeout 1452600528 john //1452600528 is unix time stamp current + X hours
EXEC
清理不时调用的脚本(使用 LUA):
local currentTime = redis.call('TIME');
local list = redis.call('ZRANGEBYSCORE', 'geo-timeout', 0, currentTime[0]);
local keysRemoved = 0;
for i, name in ipairs(list) do
redis.call('ZREM', 'geo-timeout', name);
redis.call('ZREM', 'report-geo-set', name);
keysRemoved = keysRemoved + 1;
end
return keysRemoved;
【讨论】:
ZREM)两个集合中的旧成员。