Browse Source

Promote 2.6 as an independent server profile for Redis 2.6.

The development server profile now targets Redis 3.0.
Daniele Alessandri 13 năm trước cách đây
mục cha
commit
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';
     }
 
     /**