瀏覽代碼

Promote 2.6 as an independent server profile for Redis 2.6.

The development server profile now targets Redis 3.0.
Daniele Alessandri 13 年之前
父節點
當前提交
6d73f4a538

+ 1 - 1
README.md

@@ -10,7 +10,7 @@ project,
 
 ## Main features ##
 
-- Complete support for Redis from __1.2__ to __2.4__ and the current development versions using different
+- Complete support for Redis from __1.2__ to __2.6__ and the current unstable versions using different
   server profiles.
 - Client-side sharding with support for consistent hashing or custom distribution strategies.
 - Support for master / slave replication configurations (write on master, read from slaves).

+ 1 - 1
lib/Predis/Profiles/ServerProfile.php

@@ -76,7 +76,7 @@ abstract class ServerProfile implements IServerProfile, IProcessingSupport
             '2.0'     => 'Predis\Profiles\ServerVersion20',
             '2.2'     => 'Predis\Profiles\ServerVersion22',
             '2.4'     => 'Predis\Profiles\ServerVersion24',
-            '2.6'     => 'Predis\Profiles\ServerVersionNext',
+            '2.6'     => 'Predis\Profiles\ServerVersion26',
             'default' => 'Predis\Profiles\ServerVersion24',
             'dev'     => 'Predis\Profiles\ServerVersionNext',
         );

+ 234 - 0
lib/Predis/Profiles/ServerVersion26.php

@@ -0,0 +1,234 @@
+<?php
+
+/*
+ * This file is part of the Predis package.
+ *
+ * (c) Daniele Alessandri <suppakilla@gmail.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Predis\Profiles;
+
+/**
+ * Server profile for Redis v2.6.x.
+ *
+ * @author Daniele Alessandri <suppakilla@gmail.com>
+ */
+class ServerVersion26 extends ServerProfile
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function getVersion()
+    {
+        return '2.6';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getSupportedCommands()
+    {
+        return array(
+            /* ---------------- Redis 1.2 ---------------- */
+
+            /* commands operating on the key space */
+            'exists'                    => 'Predis\Commands\KeyExists',
+            'del'                       => 'Predis\Commands\KeyDelete',
+            'type'                      => 'Predis\Commands\KeyType',
+            'keys'                      => 'Predis\Commands\KeyKeys',
+            'randomkey'                 => 'Predis\Commands\KeyRandom',
+            'rename'                    => 'Predis\Commands\KeyRename',
+            'renamenx'                  => 'Predis\Commands\KeyRenamePreserve',
+            'expire'                    => 'Predis\Commands\KeyExpire',
+            'expireat'                  => 'Predis\Commands\KeyExpireAt',
+            'ttl'                       => 'Predis\Commands\KeyTimeToLive',
+            'move'                      => 'Predis\Commands\KeyMove',
+            'sort'                      => 'Predis\Commands\KeySort',
+
+            /* commands operating on string values */
+            'set'                       => 'Predis\Commands\StringSet',
+            'setnx'                     => 'Predis\Commands\StringSetPreserve',
+            'mset'                      => 'Predis\Commands\StringSetMultiple',
+            'msetnx'                    => 'Predis\Commands\StringSetMultiplePreserve',
+            'get'                       => 'Predis\Commands\StringGet',
+            'mget'                      => 'Predis\Commands\StringGetMultiple',
+            'getset'                    => 'Predis\Commands\StringGetSet',
+            'incr'                      => 'Predis\Commands\StringIncrement',
+            'incrby'                    => 'Predis\Commands\StringIncrementBy',
+            'decr'                      => 'Predis\Commands\StringDecrement',
+            'decrby'                    => 'Predis\Commands\StringDecrementBy',
+
+            /* commands operating on lists */
+            'rpush'                     => 'Predis\Commands\ListPushTail',
+            'lpush'                     => 'Predis\Commands\ListPushHead',
+            'llen'                      => 'Predis\Commands\ListLength',
+            'lrange'                    => 'Predis\Commands\ListRange',
+            'ltrim'                     => 'Predis\Commands\ListTrim',
+            'lindex'                    => 'Predis\Commands\ListIndex',
+            'lset'                      => 'Predis\Commands\ListSet',
+            'lrem'                      => 'Predis\Commands\ListRemove',
+            'lpop'                      => 'Predis\Commands\ListPopFirst',
+            'rpop'                      => 'Predis\Commands\ListPopLast',
+            'rpoplpush'                 => 'Predis\Commands\ListPopLastPushHead',
+
+            /* commands operating on sets */
+            'sadd'                      => 'Predis\Commands\SetAdd',
+            'srem'                      => 'Predis\Commands\SetRemove',
+            'spop'                      => 'Predis\Commands\SetPop',
+            'smove'                     => 'Predis\Commands\SetMove',
+            'scard'                     => 'Predis\Commands\SetCardinality',
+            'sismember'                 => 'Predis\Commands\SetIsMember',
+            'sinter'                    => 'Predis\Commands\SetIntersection',
+            'sinterstore'               => 'Predis\Commands\SetIntersectionStore',
+            'sunion'                    => 'Predis\Commands\SetUnion',
+            'sunionstore'               => 'Predis\Commands\SetUnionStore',
+            'sdiff'                     => 'Predis\Commands\SetDifference',
+            'sdiffstore'                => 'Predis\Commands\SetDifferenceStore',
+            'smembers'                  => 'Predis\Commands\SetMembers',
+            'srandmember'               => 'Predis\Commands\SetRandomMember',
+
+            /* commands operating on sorted sets */
+            'zadd'                      => 'Predis\Commands\ZSetAdd',
+            'zincrby'                   => 'Predis\Commands\ZSetIncrementBy',
+            'zrem'                      => 'Predis\Commands\ZSetRemove',
+            'zrange'                    => 'Predis\Commands\ZSetRange',
+            'zrevrange'                 => 'Predis\Commands\ZSetReverseRange',
+            'zrangebyscore'             => 'Predis\Commands\ZSetRangeByScore',
+            'zcard'                     => 'Predis\Commands\ZSetCardinality',
+            'zscore'                    => 'Predis\Commands\ZSetScore',
+            'zremrangebyscore'          => 'Predis\Commands\ZSetRemoveRangeByScore',
+
+            /* connection related commands */
+            'ping'                      => 'Predis\Commands\ConnectionPing',
+            'auth'                      => 'Predis\Commands\ConnectionAuth',
+            'select'                    => 'Predis\Commands\ConnectionSelect',
+            'echo'                      => 'Predis\Commands\ConnectionEcho',
+            'quit'                      => 'Predis\Commands\ConnectionQuit',
+
+            /* remote server control commands */
+            'info'                      => 'Predis\Commands\ServerInfo',
+            'slaveof'                   => 'Predis\Commands\ServerSlaveOf',
+            'monitor'                   => 'Predis\Commands\ServerMonitor',
+            'dbsize'                    => 'Predis\Commands\ServerDatabaseSize',
+            'flushdb'                   => 'Predis\Commands\ServerFlushDatabase',
+            'flushall'                  => 'Predis\Commands\ServerFlushAll',
+            'save'                      => 'Predis\Commands\ServerSave',
+            'bgsave'                    => 'Predis\Commands\ServerBackgroundSave',
+            'lastsave'                  => 'Predis\Commands\ServerLastSave',
+            'shutdown'                  => 'Predis\Commands\ServerShutdown',
+            'bgrewriteaof'              => 'Predis\Commands\ServerBackgroundRewriteAOF',
+
+
+            /* ---------------- Redis 2.0 ---------------- */
+
+            /* commands operating on string values */
+            'setex'                     => 'Predis\Commands\StringSetExpire',
+            'append'                    => 'Predis\Commands\StringAppend',
+            'substr'                    => 'Predis\Commands\StringSubstr',
+
+            /* commands operating on lists */
+            'blpop'                     => 'Predis\Commands\ListPopFirstBlocking',
+            'brpop'                     => 'Predis\Commands\ListPopLastBlocking',
+
+            /* commands operating on sorted sets */
+            'zunionstore'               => 'Predis\Commands\ZSetUnionStore',
+            'zinterstore'               => 'Predis\Commands\ZSetIntersectionStore',
+            'zcount'                    => 'Predis\Commands\ZSetCount',
+            'zrank'                     => 'Predis\Commands\ZSetRank',
+            'zrevrank'                  => 'Predis\Commands\ZSetReverseRank',
+            'zremrangebyrank'           => 'Predis\Commands\ZSetRemoveRangeByRank',
+
+            /* commands operating on hashes */
+            'hset'                      => 'Predis\Commands\HashSet',
+            'hsetnx'                    => 'Predis\Commands\HashSetPreserve',
+            'hmset'                     => 'Predis\Commands\HashSetMultiple',
+            'hincrby'                   => 'Predis\Commands\HashIncrementBy',
+            'hget'                      => 'Predis\Commands\HashGet',
+            'hmget'                     => 'Predis\Commands\HashGetMultiple',
+            'hdel'                      => 'Predis\Commands\HashDelete',
+            'hexists'                   => 'Predis\Commands\HashExists',
+            'hlen'                      => 'Predis\Commands\HashLength',
+            'hkeys'                     => 'Predis\Commands\HashKeys',
+            'hvals'                     => 'Predis\Commands\HashValues',
+            'hgetall'                   => 'Predis\Commands\HashGetAll',
+
+            /* transactions */
+            'multi'                     => 'Predis\Commands\TransactionMulti',
+            'exec'                      => 'Predis\Commands\TransactionExec',
+            'discard'                   => 'Predis\Commands\TransactionDiscard',
+
+            /* publish - subscribe */
+            'subscribe'                 => 'Predis\Commands\PubSubSubscribe',
+            'unsubscribe'               => 'Predis\Commands\PubSubUnsubscribe',
+            'psubscribe'                => 'Predis\Commands\PubSubSubscribeByPattern',
+            'punsubscribe'              => 'Predis\Commands\PubSubUnsubscribeByPattern',
+            'publish'                   => 'Predis\Commands\PubSubPublish',
+
+            /* remote server control commands */
+            'config'                    => 'Predis\Commands\ServerConfig',
+
+
+            /* ---------------- Redis 2.2 ---------------- */
+
+            /* commands operating on the key space */
+            'persist'                   => 'Predis\Commands\KeyPersist',
+
+            /* commands operating on string values */
+            'strlen'                    => 'Predis\Commands\StringStrlen',
+            'setrange'                  => 'Predis\Commands\StringSetRange',
+            'getrange'                  => 'Predis\Commands\StringGetRange',
+            'setbit'                    => 'Predis\Commands\StringSetBit',
+            'getbit'                    => 'Predis\Commands\StringGetBit',
+
+            /* commands operating on lists */
+            'rpushx'                    => 'Predis\Commands\ListPushTailX',
+            'lpushx'                    => 'Predis\Commands\ListPushHeadX',
+            'linsert'                   => 'Predis\Commands\ListInsert',
+            'brpoplpush'                => 'Predis\Commands\ListPopLastPushHeadBlocking',
+
+            /* commands operating on sorted sets */
+            'zrevrangebyscore'          => 'Predis\Commands\ZSetReverseRangeByScore',
+
+            /* transactions */
+            'watch'                     => 'Predis\Commands\TransactionWatch',
+            'unwatch'                   => 'Predis\Commands\TransactionUnwatch',
+
+            /* remote server control commands */
+            'object'                    => 'Predis\Commands\ServerObject',
+            'slowlog'                   => 'Predis\Commands\ServerSlowlog',
+
+
+            /* ---------------- Redis 2.4 ---------------- */
+
+            /* remote server control commands */
+            'client'                    => 'Predis\Commands\ServerClient',
+
+
+            /* ---------------- Redis 2.6 ---------------- */
+
+            /* commands operating on the key space */
+            'pttl'                      => 'Predis\Commands\KeyPreciseTimeToLive',
+            'pexpire'                   => 'Predis\Commands\KeyPreciseExpire',
+            'pexpireat'                 => 'Predis\Commands\KeyPreciseExpireAt',
+
+            /* commands operating on string values */
+            'psetex'                    => 'Predis\Commands\StringPreciseSetExpire',
+            'incrbyfloat'               => 'Predis\Commands\StringIncrementByFloat',
+
+            /* commands operating on hashes */
+            'hincrbyfloat'              => 'Predis\Commands\HashIncrementByFloat',
+
+            /* scripting */
+            'eval'                      => 'Predis\Commands\ServerEval',
+            'evalsha'                   => 'Predis\Commands\ServerEvalSHA',
+            'script'                    => 'Predis\Commands\ServerScript',
+
+            /* remote server control commands */
+            'info'                      => 'Predis\Commands\ServerInfoV26x',
+            'time'                      => 'Predis\Commands\ServerTime',
+        );
+    }
+}

+ 3 - 23
lib/Predis/Profiles/ServerVersionNext.php

@@ -12,18 +12,18 @@
 namespace Predis\Profiles;
 
 /**
- * Server profile for the current development version of Redis.
+ * Server profile for the current unstable version of Redis.
  *
  * @author Daniele Alessandri <suppakilla@gmail.com>
  */
-class ServerVersionNext extends ServerVersion24
+class ServerVersionNext extends ServerVersion26
 {
     /**
      * {@inheritdoc}
      */
     public function getVersion()
     {
-        return '2.6';
+        return '3.0';
     }
 
     /**
@@ -32,26 +32,6 @@ class ServerVersionNext extends ServerVersion24
     public function getSupportedCommands()
     {
         return array_merge(parent::getSupportedCommands(), array(
-            /* commands operating on the key space */
-            'pttl'                      => 'Predis\Commands\KeyPreciseTimeToLive',
-            'pexpire'                   => 'Predis\Commands\KeyPreciseExpire',
-            'pexpireat'                 => 'Predis\Commands\KeyPreciseExpireAt',
-
-            /* commands operating on string values */
-            'psetex'                    => 'Predis\Commands\StringPreciseSetExpire',
-            'incrbyfloat'               => 'Predis\Commands\StringIncrementByFloat',
-
-            /* commands operating on hashes */
-            'hincrbyfloat'              => 'Predis\Commands\HashIncrementByFloat',
-
-            /* scripting */
-            'eval'                      => 'Predis\Commands\ServerEval',
-            'evalsha'                   => 'Predis\Commands\ServerEvalSHA',
-            'script'                    => 'Predis\Commands\ServerScript',
-
-            /* remote server control commands */
-            'info'                      => 'Predis\Commands\ServerInfoV26x',
-            'time'                      => 'Predis\Commands\ServerTime',
         ));
     }
 }

+ 1 - 1
tests/Predis/Profiles/ServerProfileTest.php

@@ -20,7 +20,7 @@ use Predis\Commands\Processors\ProcessorChain;
 class ServerProfileTest extends StandardTestCase
 {
     const DEFAULT_PROFILE_VERSION = '2.4';
-    const DEVELOPMENT_PROFILE_VERSION = '2.6';
+    const DEVELOPMENT_PROFILE_VERSION = '3.0';
 
     /**
      * @group disconnected

+ 174 - 0
tests/Predis/Profiles/ServerVersion26Test.php

@@ -0,0 +1,174 @@
+<?php
+
+/*
+ * This file is part of the Predis package.
+ *
+ * (c) Daniele Alessandri <suppakilla@gmail.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Predis\Profiles;
+
+/**
+ *
+ */
+class ServerVersion26Test extends ServerVersionTestCase
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function getProfileInstance()
+    {
+        return new ServerVersion26();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getExpectedVersion()
+    {
+        return '2.6';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getExpectedCommands()
+    {
+        return array(
+            0 => 'exists',
+            1 => 'del',
+            2 => 'type',
+            3 => 'keys',
+            4 => 'randomkey',
+            5 => 'rename',
+            6 => 'renamenx',
+            7 => 'expire',
+            8 => 'expireat',
+            9 => 'ttl',
+            10 => 'move',
+            11 => 'sort',
+            12 => 'set',
+            13 => 'setnx',
+            14 => 'mset',
+            15 => 'msetnx',
+            16 => 'get',
+            17 => 'mget',
+            18 => 'getset',
+            19 => 'incr',
+            20 => 'incrby',
+            21 => 'decr',
+            22 => 'decrby',
+            23 => 'rpush',
+            24 => 'lpush',
+            25 => 'llen',
+            26 => 'lrange',
+            27 => 'ltrim',
+            28 => 'lindex',
+            29 => 'lset',
+            30 => 'lrem',
+            31 => 'lpop',
+            32 => 'rpop',
+            33 => 'rpoplpush',
+            34 => 'sadd',
+            35 => 'srem',
+            36 => 'spop',
+            37 => 'smove',
+            38 => 'scard',
+            39 => 'sismember',
+            40 => 'sinter',
+            41 => 'sinterstore',
+            42 => 'sunion',
+            43 => 'sunionstore',
+            44 => 'sdiff',
+            45 => 'sdiffstore',
+            46 => 'smembers',
+            47 => 'srandmember',
+            48 => 'zadd',
+            49 => 'zincrby',
+            50 => 'zrem',
+            51 => 'zrange',
+            52 => 'zrevrange',
+            53 => 'zrangebyscore',
+            54 => 'zcard',
+            55 => 'zscore',
+            56 => 'zremrangebyscore',
+            57 => 'ping',
+            58 => 'auth',
+            59 => 'select',
+            60 => 'echo',
+            61 => 'quit',
+            62 => 'info',
+            63 => 'slaveof',
+            64 => 'monitor',
+            65 => 'dbsize',
+            66 => 'flushdb',
+            67 => 'flushall',
+            68 => 'save',
+            69 => 'bgsave',
+            70 => 'lastsave',
+            71 => 'shutdown',
+            72 => 'bgrewriteaof',
+            73 => 'setex',
+            74 => 'append',
+            75 => 'substr',
+            76 => 'blpop',
+            77 => 'brpop',
+            78 => 'zunionstore',
+            79 => 'zinterstore',
+            80 => 'zcount',
+            81 => 'zrank',
+            82 => 'zrevrank',
+            83 => 'zremrangebyrank',
+            84 => 'hset',
+            85 => 'hsetnx',
+            86 => 'hmset',
+            87 => 'hincrby',
+            88 => 'hget',
+            89 => 'hmget',
+            90 => 'hdel',
+            91 => 'hexists',
+            92 => 'hlen',
+            93 => 'hkeys',
+            94 => 'hvals',
+            95 => 'hgetall',
+            96 => 'multi',
+            97 => 'exec',
+            98 => 'discard',
+            99 => 'subscribe',
+            100 => 'unsubscribe',
+            101 => 'psubscribe',
+            102 => 'punsubscribe',
+            103 => 'publish',
+            104 => 'config',
+            105 => 'persist',
+            106 => 'strlen',
+            107 => 'setrange',
+            108 => 'getrange',
+            109 => 'setbit',
+            110 => 'getbit',
+            111 => 'rpushx',
+            112 => 'lpushx',
+            113 => 'linsert',
+            114 => 'brpoplpush',
+            115 => 'zrevrangebyscore',
+            116 => 'watch',
+            117 => 'unwatch',
+            118 => 'object',
+            119 => 'slowlog',
+            120 => 'client',
+            121 => 'pttl',
+            122 => 'pexpire',
+            123 => 'pexpireat',
+            124 => 'psetex',
+            125 => 'incrbyfloat',
+            126 => 'hincrbyfloat',
+            127 => 'eval',
+            128 => 'evalsha',
+            129 => 'script',
+            130 => 'time',
+        );
+    }
+}

+ 1 - 1
tests/Predis/Profiles/ServerVersionNextTest.php

@@ -29,7 +29,7 @@ class ServerVersionNextTest extends ServerVersionTestCase
      */
     public function getExpectedVersion()
     {
-        return '2.6';
+        return '3.0';
     }
 
     /**