diff --git a/lib/cache/apc.php b/lib/cache/apc.php
new file mode 100644
index 0000000000000000000000000000000000000000..f814afbe494d748a1e97054be558d89efb7d406a
--- /dev/null
+++ b/lib/cache/apc.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+class OC_Cache_APC {
+	/**
+	 * entries in APC gets namespaced to prevent collisions between owncloud instances and users
+	 */
+	protected function getNameSpace() {
+		return OC_Util::getInstanceId().'/'.OC_User::getUser().'/';
+	}
+
+	public function get($key) {
+		$result = apc_fetch($this->getNamespace().$key, $success);
+		if (!$success) {
+			return null;
+		}
+		return $result;
+	}
+
+	public function set($key, $value, $ttl=0) {
+		return apc_store($this->getNamespace().$key, $value, $ttl);
+	}
+
+	public function hasKey($key) {
+		return apc_exists($this->getNamespace().$key);
+	}
+
+	public function remove($key) {
+		return apc_delete($this->getNamespace().$key);
+	}
+
+	public function clear(){
+		$ns = $this->getNamespace();
+		$cache = apc_cache_info('user');
+		foreach($cache['cache_list'] as $entry) {
+			if (strpos($entry['info'], $ns) === 0) {
+				apc_delete($entry['info']);
+			}
+		}
+	}
+}
diff --git a/tests/lib/cache.php b/tests/lib/cache.php
index e90826b85f28c5acfdf8dc8eb3d97b1e36654481..bb5cfc6ee19897a703212d545fecff0b4ebd2582 100644
--- a/tests/lib/cache.php
+++ b/tests/lib/cache.php
@@ -40,6 +40,8 @@ abstract class Test_Cache extends UnitTestCase {
 
 		$this->assertFalse($this->instance->hasKey('not_set'));
 		$this->assertNull($this->instance->get('not_set'),'Unset value not equal to null');
+
+		$this->assertTrue($this->instance->remove('value1'));
 	}
 
 	function testTTL(){
diff --git a/tests/lib/cache/apc.php b/tests/lib/cache/apc.php
new file mode 100644
index 0000000000000000000000000000000000000000..ab8eb1886648b68ba3b8558051c8633cd6215322
--- /dev/null
+++ b/tests/lib/cache/apc.php
@@ -0,0 +1,36 @@
+<?php
+/**
+* ownCloud
+*
+* @author Robin Appelman
+* @copyright 2012 Robin Appelman icewind@owncloud.com
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Affero General Public
+* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+class Test_Cache_APC extends Test_Cache {
+	function skip() {
+		$this->skipUnless(function_exists('apc_store'));
+	}
+
+	public function setUp(){
+		$this->instance=new OC_Cache_APC();
+	}
+
+	function testTTL(){
+		// ttl doesn't work correctly in the same request
+		// see https://bugs.php.net/bug.php?id=58084
+	}
+}