diff --git a/lib/private/memcache/memcached.php b/lib/private/memcache/memcached.php
index c13be68b47fd14fb57224ff2fff6f5cb8cb589bc..a30f9da7ed7453aec269fa04c34c4c5a752f0767 100644
--- a/lib/private/memcache/memcached.php
+++ b/lib/private/memcache/memcached.php
@@ -88,7 +88,9 @@ class Memcached extends Cache implements IMemcache {
 
 	public function remove($key) {
 		$result= self::$cache->delete($this->getNamespace() . $key);
-		$this->verifyReturnCode();
+		if (self::$cache->getResultCode() !== \Memcached::RES_NOTFOUND) {
+			$this->verifyReturnCode();
+		}
 		return $result;
 	}
 
@@ -124,10 +126,13 @@ class Memcached extends Cache implements IMemcache {
 	 * @param mixed $value
 	 * @param int $ttl Time To Live in seconds. Defaults to 60*60*24
 	 * @return bool
+	 * @throws \Exception
 	 */
 	public function add($key, $value, $ttl = 0) {
 		$result = self::$cache->add($this->getPrefix() . $key, $value, $ttl);
-		$this->verifyReturnCode();
+		if (self::$cache->getResultCode() !== \Memcached::RES_NOTSTORED) {
+			$this->verifyReturnCode();
+		}
 		return $result;
 	}
 
@@ -141,7 +146,11 @@ class Memcached extends Cache implements IMemcache {
 	public function inc($key, $step = 1) {
 		$this->add($key, 0);
 		$result = self::$cache->increment($this->getPrefix() . $key, $step);
-		$this->verifyReturnCode();
+
+		if (self::$cache->getResultCode() !== \Memcached::RES_SUCCESS) {
+			return false;
+		}
+
 		return $result;
 	}
 
@@ -154,7 +163,11 @@ class Memcached extends Cache implements IMemcache {
 	 */
 	public function dec($key, $step = 1) {
 		$result = self::$cache->decrement($this->getPrefix() . $key, $step);
-		$this->verifyReturnCode();
+
+		if (self::$cache->getResultCode() !== \Memcached::RES_SUCCESS) {
+			return false;
+		}
+
 		return $result;
 	}
 
diff --git a/tests/lib/memcache/cache.php b/tests/lib/memcache/cache.php
index 3ff72ee931c7ba77ebc7e47cbfc5f56ad89186f2..725b0fbbf57ed456d4e0acfd53b0b54ddc335bc5 100644
--- a/tests/lib/memcache/cache.php
+++ b/tests/lib/memcache/cache.php
@@ -39,6 +39,11 @@ abstract class Cache extends \Test_Cache {
 		$this->assertFalse($this->instance->hasKey('foo'));
 	}
 
+	public function testRemoveNonExisting() {
+		$this->instance->remove('foo');
+		$this->assertFalse($this->instance->hasKey('foo'));
+	}
+
 	public function testArrayAccessSet() {
 		$this->instance['foo'] = 'bar';
 		$this->assertEquals('bar', $this->instance->get('foo'));
@@ -72,7 +77,9 @@ abstract class Cache extends \Test_Cache {
 		$this->assertEquals(1, $this->instance->inc('foo'));
 		$this->assertEquals(1, $this->instance->get('foo'));
 		$this->assertEquals(2, $this->instance->inc('foo'));
+		$this->assertEquals(2, $this->instance->get('foo'));
 		$this->assertEquals(12, $this->instance->inc('foo', 10));
+		$this->assertEquals(12, $this->instance->get('foo'));
 
 		$this->instance->set('foo', 'bar');
 		$this->assertFalse($this->instance->inc('foo'));
@@ -80,7 +87,7 @@ abstract class Cache extends \Test_Cache {
 	}
 
 	public function testDec() {
-		$this->assertEquals(false, $this->instance->dec('foo'));
+		$this->assertFalse($this->instance->dec('foo'));
 		$this->instance->set('foo', 20);
 		$this->assertEquals(19, $this->instance->dec('foo'));
 		$this->assertEquals(19, $this->instance->get('foo'));