Commit Graph

44 Commits

Author SHA1 Message Date
Daniele Alessandri 00000fde4e Add new command: GEORADIUS (Redis 3.2.0). 2016-05-24 22:30:06 +02:00
Daniele Alessandri b2284d015f Add new command: GEODIST (Redis 3.2.0). 2016-05-24 17:09:35 +02:00
Daniele Alessandri c4e0044269 Add new command: GEOPOS (Redis 3.2.0). 2016-05-24 17:09:33 +02:00
Daniele Alessandri 0b6b3b2558 Add new command: GEOHASH (Redis 3.2.0). 2016-05-24 16:00:08 +02:00
Daniele Alessandri 7ef9619f5c Add new command: GEOADD (Redis 3.2.0). 2016-05-24 16:00:06 +02:00
Daniele Alessandri 3362e474b6 Add new command: BITFIELD (Redis 3.2.0). 2016-05-24 16:00:04 +02:00
Ante Braovic 62c547601c added zrevrangebylex in the list of available methods 2016-05-12 16:27:17 +02:00
Daniele Alessandri 24c0f846c7 Use static:: for invoking static methods in key prefix processor.
This trivial change makes it possible to use overridden static methods
when extending Predis\Command\Processor\KeyPrefixProcessor. PHP always
invokes the static methods of a parent class when using self:: even if
the extended classes override them.
2015-07-29 12:28:44 +02:00
Daniele Alessandri f43433baf1 Add new command: HSTRLEN (Redis 3.2.0).
Also bump the unstable profile version to 3.2.
2015-07-29 11:50:20 +02:00
Daniele Alessandri 8dd9893a2f Run php-cs-fixer with new configuration. 2015-07-24 23:17:02 +02:00
Daniele Alessandri 7282ca2b52 Remove unneeded "use" imports. 2015-07-24 21:25:40 +02:00
Daniele Alessandri df2e9f4e71 Fix prefix processor to handle variadic EXISTS (Redis >= 3.0.3). 2015-07-24 18:29:51 +02:00
Daniele Alessandri 6590c44a27 Run php-cs-fixer against codebase in src/ and tests/. 2015-07-24 18:04:42 +02:00
Daniele Alessandri 8c76bd6761 Do not parse response to SETNX into boolean value. 2015-07-24 15:52:59 +02:00
Daniele Alessandri 38fafb22ba Do not parse response to MSETNX into boolean value. 2015-07-24 15:52:53 +02:00
Daniele Alessandri 5ce683be09 Do not parse response to SMOVE into boolean value. 2015-07-24 15:52:50 +02:00
Daniele Alessandri e531d39f53 Do not parse response to SISMEMBER into boolean value. 2015-07-24 15:52:45 +02:00
Daniele Alessandri fda9f022dd Do not parse response to RENAMENX into boolean value. 2015-07-24 15:52:27 +02:00
Daniele Alessandri 44e92d8a2f Do not parse response to PERSIST into boolean value. 2015-07-24 15:50:43 +02:00
Daniele Alessandri e75b69f6fd Do not parse response to MOVE into boolean value. 2015-07-24 15:50:38 +02:00
Daniele Alessandri 082c51146a Do not parse response to EXPIREAT into boolean value. 2015-07-24 15:50:34 +02:00
Daniele Alessandri b02e3f4911 Do not parse response to EXPIRE into boolean value. 2015-07-24 15:50:21 +02:00
Daniele Alessandri 87921f7a05 Do not parse response to PFADD into boolean value. 2015-07-24 15:50:10 +02:00
Daniele Alessandri 3fdfc50683 Do not parse response to HSETNX into boolean value. 2015-07-24 15:50:05 +02:00
Daniele Alessandri ae26ecc8bf Do not parse response to HSET into boolean value. 2015-07-24 15:50:01 +02:00
Daniele Alessandri 231a3440f7 Do not parse response to HEXISTS into boolean value. 2015-07-24 15:49:55 +02:00
Daniele Alessandri ab20c52115 Do not parse response to EXISTS into boolean value.
Starting with Redis 3.0.3 the EXISTS command is variadic so that it is
possible to check for the existence of multiple keys in one request,
with the server returning the number of keys found.

This change could break codebases relying on strict comparison (===)
against a boolean value, but just doing $redis->exists('key') == TRUE
is totally fine.
2015-07-24 15:49:40 +02:00
Daniele Alessandri 474f3ddbe7 Add missing command: MIGRATE (Redis 2.6.0).
Fixes #209.
2015-07-23 17:22:53 +02:00
Daniele Alessandri 6882d08373 Add missing BITPOS command in key prefix processor.
See #265.
2015-07-23 11:06:57 +02:00
Daniele Alessandri 24d8f68e7f 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:05:56 +02:00
Michal Humpula af48b30398 add zrevrangebylex command 2015-01-23 23:06:40 +01: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 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
Thibaud BARDIN 0fc5c5ee77 [phpdoc] Fix missing throws of phpdoc headers. 2014-08-09 23:14:45 +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 df653a7c00 Minor code styling and phpdoc changes. 2014-07-28 12:04:07 +02:00
Daniele Alessandri 45e351be79 [phpdoc] Fix formatting of phpdoc headers. 2014-07-27 23:59:37 +02:00
Daniele Alessandri f372029cfc Fix code smells. 2014-07-27 20:13:24 +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 202c558103 Run php-cs against source code. 2014-07-17 15:59:43 +02:00
Daniele Alessandri a33781e58c Merge branch 'v1.0/psr-4'
This merge closes #168.

Conflicts:
	src/Command/KeyKeysV12x.php
	src/Profile/RedisVersion120.php
2014-07-16 12:56:27 +02:00
Daniele Alessandri 029822fe22 Move source files from "lib/" to "src/". 2014-07-14 18:04:18 +02:00