diff --git a/lib/Predis.php b/lib/Predis.php index 85da0102..4790e77d 100644 --- a/lib/Predis.php +++ b/lib/Predis.php @@ -1746,6 +1746,9 @@ class RedisServer_vNext extends RedisServer_v2_0 { /* transactions */ 'watch' => '\Predis\Commands\Watch', 'unwatch' => '\Predis\Commands\Unwatch', + + /* commands operating on string values */ + 'strlen' => '\Predis\Commands\Strlen', )); } } @@ -2290,6 +2293,10 @@ class Substr extends Command { public function getCommandId() { return 'SUBSTR'; } } +class Strlen extends Command { + public function getCommandId() { return 'STRLEN'; } +} + /* commands operating on the key space */ class Keys extends Command { public function canBeHashed() { return false; } diff --git a/test/RedisCommandsTest.php b/test/RedisCommandsTest.php index cc9db5be..ed891123 100644 --- a/test/RedisCommandsTest.php +++ b/test/RedisCommandsTest.php @@ -240,6 +240,19 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase { }); } + function testStrlen() { + $this->redis->set('var', 'foobar'); + $this->assertEquals(6, $this->redis->strlen('var')); + $this->assertEquals(9, $this->redis->append('var', '___')); + $this->assertEquals(9, $this->redis->strlen('var')); + + RC::testForServerException($this, RC::EXCEPTION_WRONG_TYPE, function($test) { + $test->redis->rpush('metavars', 'foo'); + $test->redis->strlen('metavars'); + }); + } + + /* commands operating on the key space */ function testKeys() {