util/memcache.lua

changeset 13
db66a09dc0b6
parent 0
73bc20975514
child 14
578214a34ded
--- 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
 

mercurial