111 Commits

Author SHA1 Message Date
Daniele Alessandri c4e0f2f037 Run php-cs-fixer. 2016-05-26 09:52:18 +02:00
Daniele Alessandri 8491b1d880 Add new command: GEORADIUSBYMEMBER (Redis 3.2.0). 2016-05-24 23:28:23 +02:00
Daniele Alessandri 8c8261432f Add new command: GEORADIUS (Redis 3.2.0). 2016-05-24 23:28:11 +02:00
Daniele Alessandri 5eccd6ee3c Add new command: GEODIST (Redis 3.2.0). 2016-05-24 23:28:01 +02:00
Daniele Alessandri 3d9588ec1a Add new command: GEOPOS (Redis 3.2.0). 2016-05-24 23:27:50 +02:00
Daniele Alessandri e96f7f748a Add new command: GEOHASH (Redis 3.2.0). 2016-05-24 23:27:33 +02:00
Daniele Alessandri dd0edf761a Add new command: GEOADD (Redis 3.2.0). 2016-05-24 23:27:10 +02:00
Daniele Alessandri 8cbbd073cb Add new command: BITFIELD (Redis 3.2.0). 2016-05-24 23:26:48 +02:00
Daniele Alessandri 1e521b56cd [tests] Test count argument for SPOP in Redis 3.2. 2016-05-24 23:25:46 +02:00
Daniele Alessandri 0bd57ab744 [tests] Add missing test for key prefix in HSTRLEN. 2016-05-24 15:28:39 +02:00
Daniele Alessandri 82116b0366 Fix prefix processor to handle variadic EXISTS (Redis >= 3.0.3).
Backported from master.

Conflicts:
	src/Command/Processor/KeyPrefixProcessor.php
2016-05-24 15:26:01 +02:00
Daniele Alessandri ea2fd9700d [tests] Missing @requiresRedisVersion for HSTRLEN. 2016-05-24 11:50:15 +02:00
Daniele Alessandri 2175d87a96 [tests] Fix test executed on current Redis unstable. 2016-05-10 10:59:40 +02:00
Daniele Alessandri ce85fdadd1 [tests] Fix test executed on current Redis unstable. 2016-05-10 10:59:24 +02:00
Daniele Alessandri 6596460a57 Merge branch 'issue-tests' into v1.0 2016-05-08 16:50:28 +02:00
Daniele Alessandri 1f1c9cf1a4 Run php-cs-fixer. 2016-05-08 14:54:29 +02:00
Remi Collet f378faaf22 fix tests, list of allowed commands have changed (redis 3.0.6) 2015-12-28 10:34:24 +01:00
Daniele Alessandri 0d25e7b0bb Add new command: HSTRLEN (Redis 3.2.0).
Also bump the unstable profile version to 3.2.
2015-07-29 11:52:55 +02:00
Daniele Alessandri 2d2de7837b [tests] Fix some tests methods names. 2015-07-25 10:07:58 +02:00
Daniele Alessandri fc18e6456a [tests] Apply small changes to commands tests with expirations. 2015-07-25 10:07:55 +02:00
Daniele Alessandri 6f2064ed90 [tests] Cover SET modifiers EX, PX, NX|XX (Redis >= 2.6.12). 2015-07-25 09:11:16 +02:00
Daniele Alessandri 381e44b6e6 Run php-cs-fixer with new configuration. 2015-07-24 23:21:07 +02:00
Daniele Alessandri 82e404660e Run php-cs-fixer against codebase in src/ and tests/. 2015-07-24 17:58:56 +02:00
Daniele Alessandri 95624de5c4 [tests] Apply some fixes and improvements and remove old stuff. 2015-07-24 17:27:41 +02:00
Daniele Alessandri 6a0348fbea Add missing command: MIGRATE (Redis 2.6.0).
Fixes #209.
2015-07-23 19:21:03 +02:00
Daniele Alessandri 8365a6be77 [tests] Fix minor oversight. 2015-07-23 19:20:52 +02:00
Daniele Alessandri dede828008 Add missing BITPOS command in key prefix processor.
See #265.
2015-07-23 11:40:27 +02:00
Daniele Alessandri 5cd7b774c4 [tests] Adapt to internal encoding changes for lists in Redis 3.0. 2015-07-07 16:11:49 +02:00
Daniele Alessandri 354d1ef921 Support ZADD modifiers when using simplified command signature.
The NX|XX, CH and INCR modifiers for ZADD are available in Redis since
version 3.0.2. See http://redis.io/commands/ZADD for additional info.
2015-07-07 16:11:43 +02:00
Michal Humpula af48b30398 add zrevrangebylex command 2015-01-23 23:06:40 +01:00
Daniele Alessandri e9264bb087 Add minimum required Redis version for BITPOS integration tests. 2015-01-02 12:12:47 +01:00
Daniele Alessandri 1e774f4686 Apply minor CS fixes and trim spurious spaces. 2015-01-02 12:12:23 +01:00
nicchap 0e2b7603a5 Updated test cases
1) updated command sequence profiles
2) fixed exception test syntax error
3) Installed PHPUnit locally and successfully ran test.
2014-12-20 12:12:04 -05:00
nicchap a1977c1b61 Edited typos
Changed redeclaration error and added single return
2014-12-18 12:15:54 -05:00
nicchap 5a02204833 Added BitPos command
Added BitPos command
2014-12-18 11:09:00 -05:00
Daniele Alessandri 5f3723bbd1 [tests] Use round() to avoid issues with floats on certain plaforms.
See issue #220 on GitHub for reference.
2014-11-07 14:28:09 +01:00
Daniele Alessandri e2f4357ca3 Fix E_NOTICE emitted on empty response to INFO [section].
Empty responses can be returned when requesting an unsupported section
with the INFO command.
2014-10-25 17:45:00 +02:00
Daniele Alessandri d09c4f32f3 [tests] Relax checks on invalid expire time messages.
Previously there was a bug in Redis that returned the wrong command
in -ERR messages when passing an invalid expire time with SETEX and
PSETEX. Now that the bug has been fixed and that travis-ci uses a an
updated version of Redis, our test suite turned red.
2014-10-21 11:16:55 +02:00
Daniele Alessandri f5ba47ad74 Change response parser for ZSCAN to match changes applied to ZRANGE. 2014-07-30 16:45:00 +02:00
Daniele Alessandri dedc1ba0a9 Move command "COMMAND" to the server profile for Redis 2.8.
This command has been backported from the "unstable" branch of Redis
to the "2.8" one, and it is available since 2.8.13.
2014-07-28 20:30:09 +02:00
Daniele Alessandri dbfc1a74ba More random fixes after inspection. 2014-07-27 23:06:17 +02:00
Daniele Alessandri 4e1186f845 [phpdoc] Fix undefined classes. 2014-07-27 21:57:50 +02:00
Daniele Alessandri aa5c893d5a [phpdoc] Fix undefined namespaces. 2014-07-27 21:57:40 +02:00
Daniele Alessandri 30254a2594 [phpdoc] Various phpdoc fixes. 2014-07-27 21:57:13 +02:00
Daniele Alessandri 2ff8c37104 Redesign the whole internals for clustering.
This change actually had a positive impact on the design of the whole
internals for clustering which is now cleaner and easier to maintain.
It is still far from perfect, but we also have to keep performances in
consideration so we can say that we ended up with a good compromise.

Previously Predis assigned an hash to each command instance which was
computed from its key, now we changed approach and the library caches
the slot assigned to each command. This works for both our client-side
sharding cluster and the upcoming redis-cluster, but the former is the
one that needed most changes.

The PredisCluster aggregate connection now only takes an instance of
StrategyInterface, which in turn wraps the chosen distributor. After
all, in order to be able to calculate the assigned slot for a command
or key, the cluster strategy must have access to the distributor that
manages the distribution of the whole keyspace. Nothing really changes
in terms of configurability as it is still possible to decide which
distributor to use for client-side sharding, it is simply different:

  $distributor = new Predis\Cluster\Distribution\KetamaRing();
  $strategy = new Predis\Cluster\PredisStrategy($distributor);
  $cluster = new Predis\Connection\Aggregate\PredisCluster($strategy);

As for the RedisCluster aggregate connection, the only change is that
the mathematical operation of calculating the assigned slot from a key
has been completely moved inside the cluster strategy instance.

The strategy for redis-cluster does not use external distributors so
trying to StrategyInterface::getDistributor() will throw an exception.
This may change in future releases, but this is not a priority since
redis-cluster relies on a fixed, well-defined distribution mechanism.
2014-07-22 18:13:12 +02:00
Daniele Alessandri eb8de52269 New command: COMMAND (Redis 3.0.0).
The command returns the response as is, but it would probably be not a
bad idea to parse it to restructure returned info using named arrays,
making it easier to access single commands and their info.

We will keep it as is for now, and investigate this change later.
2014-07-18 12:56:34 +02:00
Daniele Alessandri 2e0c55ac57 Remove support for Redis 1.2.
Actually we have just removed the server profile so nothing stops you
from reimplementing it, but Redis 2.0 has been released 4 years ago so
we are speaking of ancient releases that should probably not even be
used anymore.
2014-07-16 11:14:36 +02:00
Ian Babrou 5b4a7970bb returning associative array from zrange command family 2014-07-14 13:16:26 +04:00
Daniele Alessandri a2265b12b3 Remove implementation of Predis\Command\RawCommand::__toString().
See #151 and message of commit 5c5dd40, forgot to apply the same
change to the Predis\Command\RawCommand class.
2014-06-12 11:57:54 +02:00
Daniele Alessandri 42f237e306 [tests] Use annotations to specify expected Redis server version.
This change targets only method annotations and aims to make the body
of tests more readable using the @requiresRedisVersion annotation.

Tests using this annotation requires to be assigned the "connected"
group of tests because they create a connection to the Redis instance
specified in phpunit.xml to fetch its the version.

This is a quick example of how this annotation can be used:

    /**
     * @group connected
     * @requiresRedisVersion >= 2.8.9
     */
    public function testExecutedOnlyWithMatchingRedisVersion()
    {
    }

Future improvements (currently not needed) include:

  * Same annotation working on a class-level (but still applied only
    to test methods with an explicitly assigned @group connected).

  * Ability to specify a version range.

Meh

Meh
2014-06-09 17:31:18 +02:00