diff -r fb941ed514c6 -r db66a09dc0b6 util/memcache.lua --- a/util/memcache.lua Sun Aug 01 12:16:06 2010 +0100 +++ b/util/memcache.lua Sun Aug 01 12:17:12 2010 +0100 @@ -1,11 +1,16 @@ +local now = os.time; module("memcache", package.seeall); +local max_expires_seconds = 60*60*24*30; + function new() local cache = {}; local _data = {}; local _flags = {}; + local _expiry = {}; + local _deleted = {}; function cache:set(key, flags, expires, data) if expires ~= 0 then @@ -20,6 +25,18 @@ return _flags[key], _data[key]; end + function cache:delete(key, time) + local existed = _data[key]; + _flags[key], _data[key], _expires[key] = nil, nil, nil; + if existed and time then + if time <= max_expires_seconds then + time = now() + time; + end + _deleted[key] = time; + end + return true, existed; + end + return cache; end