我在Redis上使用地理支持。
以这种方式添加新的地理定位:
std::string url = "classname * varname ;";
boost::regex exp("^w+[ ] etc.");
boost::smatch match;
if (boost::regex_search(url, match, exp))
std::cout << std::string(match[1].first, match[1].second).c_str();
我想在X小时后从report-geo-set中过期john键。
有任何建议吗?
谢谢你, 射线。
答案 0 :(得分:7)
内置命令无法实现。请记住,基于zset的地理支持和您的问题看起来像&#34;如何在ZSET&#34;中使用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;