Merge pull request #47 from GunioRobot/clean

This commit is contained in:
Daniele Alessandri
2011-10-21 08:04:12 -07:00
15 changed files with 144 additions and 144 deletions
+5 -5
View File
@@ -1,10 +1,10 @@
*** PLEASE READ ***
The library code in this branch is the result of a major rewrite of Predis 0.6
and is considered of BETA quality, which means that there should not be any
known outstanding bug and that the internal API is almost finalized and fixed
The library code in this branch is the result of a major rewrite of Predis 0.6
and is considered of BETA quality, which means that there should not be any
known outstanding bug and that the internal API is almost finalized and fixed
(but it could still be subject to slight changes if needed).
Feedback is obviously appreciated and even if things should just work, use it
at your own risk! If you need to use Predis in a production environment please
Feedback is obviously appreciated and even if things should just work, use it
at your own risk! If you need to use Predis in a production environment please
use a tagged release or checkout the version-0.6 branch from the repository.
+93 -93
View File
@@ -3,13 +3,13 @@ v0.7.0 (2010-xx-xx)
* List of the methods removed in this release:
- Predis\Client::create()
This method has been removed because it was considered redundant
This method has been removed because it was considered redundant
with Predis\Client::__construct() since Predis 0.6.0.
- Predis\Client::pipelineSafe()
This method was deprecated in Predis 0.6.1 and now it has been finally
This method was deprecated in Predis 0.6.1 and now it has been finally
removed. Use Predis\Client::pipeline(array('safe' => true)).
- Predis\Client::rawCommand()
This method was removed due to interface inconsistencies with the
This method was removed due to interface inconsistencies with the
underlying connection class used internally by the client instance.
- Predis\Client::setProfile()
This method is no more part of the public API and has been made private.
@@ -17,30 +17,30 @@ v0.7.0 (2010-xx-xx)
* Predis now includes its own autoloader. To use it, include Autoloader.php
and call Predis\Autoloader::register().
* The Predis\MultiBulkCommand class has been merged into Predis\Command and
thus removed. If you have code that extends Predis\MultiBulkCommand but
you can not afford to update your code, you can always implement it again
* The Predis\MultiBulkCommand class has been merged into Predis\Command and
thus removed. If you have code that extends Predis\MultiBulkCommand but
you can not afford to update your code, you can always implement it again
as an abstract class simply by extending Predis\Command.
* The Predis\IConnection interface has been splitted in two different new
* The Predis\IConnection interface has been splitted in two different new
interfaces: Predis\IConnectionSingle and Predis\IConnectionCluster.
* Developers can now register their own classes that implements the
Predis\IConnectionSingle interface to handle different URI schemes such as
'tcp', 'unix', 'udp' or anything else. Everything is handled by the new
* Developers can now register their own classes that implements the
Predis\IConnectionSingle interface to handle different URI schemes such as
'tcp', 'unix', 'udp' or anything else. Everything is handled by the new
Predis\ConnectionFactory class.
* Added support for UNIX domain sockets (supported by Redis 2.2) with the new
* Added support for UNIX domain sockets (supported by Redis 2.2) with the new
Predis\UnixDomainSocketConnection class and the 'unix' scheme.
* Added the new Predis\ICommand interface. The Predis\Command class now
* Added the new Predis\ICommand interface. The Predis\Command class now
implements this interface that is used in the core bits of Predis.
* Implicit extraction of arguments when the only argument passed to a
multibulk command is an array is not supported anymore and must be done
* Implicit extraction of arguments when the only argument passed to a
multibulk command is an array is not supported anymore and must be done
explicitly inside Predis\Command::filterArguments().
* It is now possible to pass instances of Predis\ConnectionParameters and
* It is now possible to pass instances of Predis\ConnectionParameters and
Predis\IConnection as parameters of Predis\Client::__construct().
v0.6.5 (2011-02-12)
@@ -49,14 +49,14 @@ v0.6.5 (2011-02-12)
desynchronization errors (ISSUE #20).
v0.6.4 (2011-02-12)
* Various performance improvements (15% ~ 25%) especially when dealing with
* Various performance improvements (15% ~ 25%) especially when dealing with
long multibulk replies or when using clustered connections.
* Added the "on_retry" option to Predis\MultiExecBlock that can be used to
specify an external callback (or any callable object) that gets invoked
* Added the "on_retry" option to Predis\MultiExecBlock that can be used to
specify an external callback (or any callable object) that gets invoked
whenever a transaction is aborted by the server.
* Added inline (p)subscribtion via options when initializing an instance of
* Added inline (p)subscribtion via options when initializing an instance of
Predis\PubSubContext.
v0.6.3 (2011-01-01)
@@ -64,10 +64,10 @@ v0.6.3 (2011-01-01)
- Strings: SETRANGE, GETRANGE, SETBIT, GETBIT
- Lists : BRPOPLPUSH
* The abstraction for MULTI/EXEC transactions has been dramatically improved
by providing support for check-and-set (CAS) operations when using Redis >=
2.2. Aborted transactions can also be optionally replayed in automatic up
to a user-defined number of times, after which a Predis\AbortedMultiExec
* The abstraction for MULTI/EXEC transactions has been dramatically improved
by providing support for check-and-set (CAS) operations when using Redis >=
2.2. Aborted transactions can also be optionally replayed in automatic up
to a user-defined number of times, after which a Predis\AbortedMultiExec
exception is thrown.
v0.6.2 (2010-11-28)
@@ -79,17 +79,17 @@ v0.6.2 (2010-11-28)
- ZSets : ZREVRANGEBYSCORE
- Misc. : PERSIST
* WATCH also accepts a single array parameter with the keys that should be
* WATCH also accepts a single array parameter with the keys that should be
monitored during a transaction.
* Improved the behaviour of Predis\MultiExecBlock in certain corner cases.
* Improved parameters checking for the SORT command.
* FIX: the STORE parameter for the SORT command didn't work correctly when
* FIX: the STORE parameter for the SORT command didn't work correctly when
using '0' as the target key (ISSUE #13).
* FIX: the methods for UNWATCH and DISCARD do not break anymore method
* FIX: the methods for UNWATCH and DISCARD do not break anymore method
chaining with Predis\MultiExecBlock.
v0.6.1 (2010-07-11)
@@ -98,147 +98,147 @@ v0.6.1 (2010-07-11)
* New commands available in the Redis v2.2 profile (dev):
- Misc. : WATCH, UNWATCH
* Optional modifiers for ZRANGE, ZREVRANGE and ZRANGEBYSCORE queries are
supported using an associative array passed as the last argument of their
* Optional modifiers for ZRANGE, ZREVRANGE and ZRANGEBYSCORE queries are
supported using an associative array passed as the last argument of their
respective methods.
* The LIMIT modifier for ZRANGEBYSCORE can be specified using either:
* The LIMIT modifier for ZRANGEBYSCORE can be specified using either:
- an indexed array: array($offset, $count)
- an associative array: array('offset' => $offset, 'count' => $count)
* The method Predis\Client::__construct() now accepts also instances of
* The method Predis\Client::__construct() now accepts also instances of
Predis\ConnectionParameters.
* Predis\MultiExecBlock and Predis\PubSubContext now throw an exception
when trying to create their instances using a profile that does not
support the required Redis commands or when the client is connected to
* Predis\MultiExecBlock and Predis\PubSubContext now throw an exception
when trying to create their instances using a profile that does not
support the required Redis commands or when the client is connected to
a cluster of connections.
* Various improvements to Predis\MultiExecBlock:
- fixes and more consistent behaviour across various usage cases.
- support for WATCH and UNWATCH when using the current development
- support for WATCH and UNWATCH when using the current development
profile (Redis v2.2) and aborted transactions.
* New signature for Predis\Client::multiExec() which is now able to accept
an array of options for the underlying instance of Predis\MultiExecBlock.
* New signature for Predis\Client::multiExec() which is now able to accept
an array of options for the underlying instance of Predis\MultiExecBlock.
Backwards compatibility with previous releases of Predis is ensured.
* New signature for Predis\Client::pipeline() which is now able to accept
an array of options for the underlying instance of Predis\CommandPipeline.
Backwards compatibility with previous releases of Predis is ensured.
* New signature for Predis\Client::pipeline() which is now able to accept
an array of options for the underlying instance of Predis\CommandPipeline.
Backwards compatibility with previous releases of Predis is ensured.
The method Predis\Client::pipelineSafe() is to be considered deprecated.
* FIX: The WEIGHT modifier for ZUNIONSTORE and ZINTERSTORE was handled
* FIX: The WEIGHT modifier for ZUNIONSTORE and ZINTERSTORE was handled
incorrectly with more than two weights specified.
v0.6.0 (2010-05-24)
* Switched to the new multi-bulk request protocol for all of the commands
in the Redis 1.2 and Redis 2.0 profiles. Inline and bulk requests are now
* Switched to the new multi-bulk request protocol for all of the commands
in the Redis 1.2 and Redis 2.0 profiles. Inline and bulk requests are now
deprecated as they will be removed in future releases of Redis.
* The default server profile is "2.0" (targeting Redis 2.0.x). If you are
using older versions of Redis, it is highly recommended that you specify
which server profile the client should use (e.g. "1.2" when connecting
* The default server profile is "2.0" (targeting Redis 2.0.x). If you are
using older versions of Redis, it is highly recommended that you specify
which server profile the client should use (e.g. "1.2" when connecting
to instances of Redis 1.2.x).
* Support for Redis 1.0 is now optional and it is provided by requiring
* Support for Redis 1.0 is now optional and it is provided by requiring
'Predis_Compatibility.php' before creating an instance of Predis\Client.
* New commands added to the Redis 2.0 profile since Predis 0.5.1:
- Strings: SETEX, APPEND, SUBSTR
- ZSets : ZCOUNT, ZRANK, ZUNIONSTORE, ZINTERSTORE, ZREMBYRANK, ZREVRANK
- Hashes : HSET, HSETNX, HMSET, HINCRBY, HGET, HMGET, HDEL, HEXISTS,
- Hashes : HSET, HSETNX, HMSET, HINCRBY, HGET, HMGET, HDEL, HEXISTS,
HLEN, HKEYS, HVALS, HGETALL
- PubSub : PUBLISH, SUBSCRIBE, UNSUBSCRIBE
- Misc. : DISCARD, CONFIG
* Introduced client-level options with the new Predis\ClientOptions class.
Options can be passed to Predis\Client::__construct in its second argument
as an array or an instance of Predis\ClientOptions. For brevity's sake and
compatibility with older versions, the constructor of Predis\Client still
* Introduced client-level options with the new Predis\ClientOptions class.
Options can be passed to Predis\Client::__construct in its second argument
as an array or an instance of Predis\ClientOptions. For brevity's sake and
compatibility with older versions, the constructor of Predis\Client still
accepts an instance of Predis\RedisServerProfile in its second argument.
The currently supported client options are:
- profile [default: "2.0" as of Predis 0.6.0]
specifies which server profile to use when connecting to Redis. This
option accepts an instance of Predis\RedisServerProfile or a string
specifies which server profile to use when connecting to Redis. This
option accepts an instance of Predis\RedisServerProfile or a string
that indicates the target version.
- key_distribution [default: Predis\Distribution\HashRing]
specifies which key distribution strategy to use to distribute keys
among the servers that compose a cluster. This option accepts an
instance of Predis\Distribution\IDistributionStrategy so that users
can implement their own key distribution strategy. Optionally, the new
Predis\Distribution\KetamaPureRing class also provides a pure-PHP
specifies which key distribution strategy to use to distribute keys
among the servers that compose a cluster. This option accepts an
instance of Predis\Distribution\IDistributionStrategy so that users
can implement their own key distribution strategy. Optionally, the new
Predis\Distribution\KetamaPureRing class also provides a pure-PHP
implementation of the same algorithm used by libketama.
- throw_on_error [default: TRUE]
server errors can optionally be handled "silently": instead of throwing
server errors can optionally be handled "silently": instead of throwing
an exception, the client returns an error response type.
- iterable_multibulk [EXPERIMENTAL - default: FALSE]
in addition to the classic way of fetching a whole multibulk reply
into an array, the client can now optionally stream a multibulk reply
down to the user code by using PHP iterators. It is just a little bit
in addition to the classic way of fetching a whole multibulk reply
into an array, the client can now optionally stream a multibulk reply
down to the user code by using PHP iterators. It is just a little bit
slower, but it can save a lot of memory in certain scenarios.
* New parameters for connections:
* New parameters for connections:
- alias [default: not set]
every connection can now be identified by an alias that is useful to
every connection can now be identified by an alias that is useful to
get a certain connection when connected to a cluster of Redis servers.
- weight [default: not set]
allows the client to balance the keys asymmetrically across multiple
servers. This might be useful when you have servers with different
amounts of memory and you want to distribute the load of your keys
allows the client to balance the keys asymmetrically across multiple
servers. This might be useful when you have servers with different
amounts of memory and you want to distribute the load of your keys
accordingly.
- connection_async [default: FALSE]
estabilish connections to servers in a non-blocking way, so that the
client is not blocked while the underlying resource performs the actual
estabilish connections to servers in a non-blocking way, so that the
client is not blocked while the underlying resource performs the actual
connection.
- connection_persistent [default: FALSE]
the underlying connection resource is left open when a script ends its
lifecycle. Persistent connections can lead to unpredictable or strange
the underlying connection resource is left open when a script ends its
lifecycle. Persistent connections can lead to unpredictable or strange
behaviours, so they should be used with extreme care.
* Introduced the Predis\Pipeline\IPipelineExecutor interface. Classes that
implements this interface are used internally by the Predis\CommandPipeline
class to change the behaviour of the pipeline when writing/reading commands
* Introduced the Predis\Pipeline\IPipelineExecutor interface. Classes that
implements this interface are used internally by the Predis\CommandPipeline
class to change the behaviour of the pipeline when writing/reading commands
from one or multiple servers. Here is the list of the default executors:
- Predis\Pipeline\StandardExecutor
Exceptions generated by server errors might be thrown depending on the
options passed to the client (see "throw_on_error"). Instead, protocol
or network errors always throw exceptions. This is the default executor
for single and clustered connections and shares the same behaviour of
Exceptions generated by server errors might be thrown depending on the
options passed to the client (see "throw_on_error"). Instead, protocol
or network errors always throw exceptions. This is the default executor
for single and clustered connections and shares the same behaviour of
Predis 0.5.x.
- Predis\Pipeline\SafeExecutor
Exceptions generated by server, protocol or network errors are not
thrown, instead they are returned in the response array as instances of
Exceptions generated by server, protocol or network errors are not
thrown, instead they are returned in the response array as instances of
ResponseError or CommunicationException.
- Predis\Pipeline\SafeClusterExecutor
This executor shares the same behaviour of Predis\Pipeline\SafeExecutor
This executor shares the same behaviour of Predis\Pipeline\SafeExecutor
but it is geared towards clustered connections.
* Support for PUBSUB is handled by the new Predis\PubSubContext class, which
* Support for PUBSUB is handled by the new Predis\PubSubContext class, which
could also be used to build a callback dispatcher for PUBSUB scenarios.
* When connected to a cluster of connections, it is now possible to get a
new Predis\Client instance for a single connection of the cluster by
* When connected to a cluster of connections, it is now possible to get a
new Predis\Client instance for a single connection of the cluster by
passing its alias/index to the new Predis\Client::getClientFor() method.
* CommandPipeline and MultiExecBlock return their instances when invoking
* CommandPipeline and MultiExecBlock return their instances when invoking
commands, thus allowing method chaining in pipelines and multi-exec blocks.
* MultiExecBlock instances can handle the new DISCARD command.
* Connections now support float values for the connection_timeout parameter
* Connections now support float values for the connection_timeout parameter
to express timeouts with a microsecond resolution.
* FIX: TCP connections now respect the read/write timeout parameter when
reading the payload of server responses. Previously, stream_get_contents()
was being used internally to read data from a connection but it looks like
PHP does not honour the specified timeout for socket streams when inside
* FIX: TCP connections now respect the read/write timeout parameter when
reading the payload of server responses. Previously, stream_get_contents()
was being used internally to read data from a connection but it looks like
PHP does not honour the specified timeout for socket streams when inside
this function.
* FIX: The GET parameter for the SORT command now accepts also multiple key
* FIX: The GET parameter for the SORT command now accepts also multiple key
patterns by passing an array of strings. (ISSUE #1).
* FIX: Replies to the DEL command return the number of elements deleted by
* FIX: Replies to the DEL command return the number of elements deleted by
the server and not 0 or 1 interpreted as a boolean response. (ISSUE #4).
v0.5.1 (2010-01-23)
@@ -250,7 +250,7 @@ v0.5.1 (2010-01-23)
* Added missing support for BGREWRITEAOF for Redis >= 1.2.0
* Implemented a factory method for the RedisServerProfile class to ease the
* Implemented a factory method for the RedisServerProfile class to ease the
creation of new server profile instances based on a version string.
v0.5.0 (2010-01-09)
+29 -29
View File
@@ -19,14 +19,14 @@ For a version compatible with PHP 5.2 you must use the backported version from t
## Quick examples ##
See the [official wiki](http://wiki.github.com/nrk/predis) of the project for a more
See the [official wiki](http://wiki.github.com/nrk/predis) of the project for a more
complete coverage of all the features available in Predis.
### Loading Predis
Predis relies on the autoloading features of PHP and complies with the
[PSR-0 standard](http://groups.google.com/group/php-standards/web/psr-0-final-proposal)
Predis relies on the autoloading features of PHP and complies with the
[PSR-0 standard](http://groups.google.com/group/php-standards/web/psr-0-final-proposal)
for interoperability with most of the major frameworks and libraries.
When used in a project or script without PSR-0 autoloading, Predis includes its own autoloader for you to use:
@@ -41,19 +41,19 @@ Predis\Autoloader::register();
// requiring any additional files.
```
You can also create a single [Phar](http://www.php.net/manual/en/intro.phar.php) archive from the repository
just by launching the `createPhar.php` script located in the `bin` directory. The generated Phar ships with
a stub that defines an autoloader function for Predis, so you just need to require the Phar archive in order
You can also create a single [Phar](http://www.php.net/manual/en/intro.phar.php) archive from the repository
just by launching the `createPhar.php` script located in the `bin` directory. The generated Phar ships with
a stub that defines an autoloader function for Predis, so you just need to require the Phar archive in order
to be able to use the library.
Alternatively you can generate a single PHP file that holds every class, just like older versions of Predis,
using the `createSingleFile.php` script located in the `bin` directory. In this way you can load Predis in
Alternatively you can generate a single PHP file that holds every class, just like older versions of Predis,
using the `createSingleFile.php` script located in the `bin` directory. In this way you can load Predis in
your scripts simply by using functions such as `require` and `include`, but this practice is not encouraged.
### Connecting to a local instance of Redis ###
You don't have to specify a tcp host and port when connecting to Redis instances running on the
You don't have to specify a tcp host and port when connecting to Redis instances running on the
localhost on the default port:
``` php
@@ -81,9 +81,9 @@ $redis = new Predis\Client(array(
### Pipelining multiple commands to multiple instances of Redis with client-side sharding ###
Pipelining helps with performances when there is the need to issue many commands to a server
in one go. Furthermore, pipelining works transparently even on aggregated connections. Predis,
in fact, supports client-side sharding of data using consistent-hashing on keys and clustered
Pipelining helps with performances when there is the need to issue many commands to a server
in one go. Furthermore, pipelining works transparently even on aggregated connections. Predis,
in fact, supports client-side sharding of data using consistent-hashing on keys and clustered
connections are supported natively by the client class.
``` php
@@ -104,8 +104,8 @@ $replies = $redis->pipeline(function($pipe) {
### Overriding standard connection classes with custom ones ###
Predis allows developers to create new connection classes to add support for new protocols
or override the existing ones to provide a different implementation compared to the default
Predis allows developers to create new connection classes to add support for new protocols
or override the existing ones to provide a different implementation compared to the default
classes. This can be obtained by subclassing the `Predis\Network\IConnectionSingle` interface.
``` php
@@ -120,17 +120,17 @@ Predis\ConnectionFactory::define('tcp', 'MyConnectionClass');
```
You can have a look at the `Predis\Network` namespace for some actual code that gives a better
You can have a look at the `Predis\Network` namespace for some actual code that gives a better
insight about how to create new connection classes.
### Definition and runtime registration of new commands on the client ###
Let's suppose Redis just added the support for a brand new feature associated
with a new command. If you want to start using the above mentioned new feature
right away without messing with Predis source code or waiting for it to find
its way into a stable Predis release, then you can start off by creating a new
class that matches the command type and its behaviour and then bind it to a
Let's suppose Redis just added the support for a brand new feature associated
with a new command. If you want to start using the above mentioned new feature
right away without messing with Predis source code or waiting for it to find
its way into a stable Predis release, then you can start off by creating a new
class that matches the command type and its behaviour and then bind it to a
client instance at runtime. Actually, it is easier done than said:
``` php
@@ -151,19 +151,19 @@ $redis->newcmd();
## Development ##
Predis is fully backed up by a test suite which tries to cover all the aspects of the
client library and the interaction of every single command with a Redis server. If you
want to work on Predis, it is highly recommended that you first run the test suite to
Predis is fully backed up by a test suite which tries to cover all the aspects of the
client library and the interaction of every single command with a Redis server. If you
want to work on Predis, it is highly recommended that you first run the test suite to
be sure that everything is OK, and report strange behaviours or bugs.
When modifying Predis please be sure that no warnings or notices are emitted by PHP
by running the interpreter in your development environment with the `error_reporting`
When modifying Predis please be sure that no warnings or notices are emitted by PHP
by running the interpreter in your development environment with the `error_reporting`
variable set to `E_ALL | E_STRICT`.
The recommended way to contribute to Predis is to fork the project on GitHub, create
new topic branches on your newly created repository to fix or add features and then
open a new pull request with a description of the applied changes. Obviously, you can
use any other Git hosting provider of your preference. Diff patches will be accepted
The recommended way to contribute to Predis is to fork the project on GitHub, create
new topic branches on your newly created repository to fix or add features and then
open a new pull request with a description of the applied changes. Obviously, you can
use any other Git hosting provider of your preference. Diff patches will be accepted
too, even though they are not the preferred way to contribute to Predis.
+1 -1
View File
@@ -5,7 +5,7 @@
* The internals of Predis\MultiExecContext should be refactored since the code
has become a bit too convoluted.
* Switch to smaller test units and add more granular tests that try to cover
* Switch to smaller test units and add more granular tests that try to cover
every single class.
* Documentation! The README is obviously not enought to show how to use Predis
+1 -1
View File
@@ -14,7 +14,7 @@ require 'SharedConfigurations.php';
/*
This is a basic example on how to use the Predis\DispatcherLoop class.
To see this example in action you can just use redis-cli and publish some
To see this example in action you can just use redis-cli and publish some
messages to the 'events' and 'control' channel, e.g.:
./redis-cli
+1 -1
View File
@@ -14,7 +14,7 @@ require 'SharedConfigurations.php';
// This is an implementation of an atomic client-side ZPOP using the support for
// check-and-set (CAS) operations with MULTI/EXEC transactions, as described in
// "WATCH explained" from http://redis.io/topics/transactions
//
//
// First, populate your database with a tiny sample data set:
//
// ./redis-cli
+1 -1
View File
@@ -39,7 +39,7 @@ Array
[5] => 40
[6] => Array
(
[0] =>
[0] =>
[1] => 40
)
@@ -65,7 +65,7 @@ class ProcessorChain implements ICommandProcessorChain, \ArrayAccess
/**
* {@inheritdoc}
*/
public function getProcessors()
public function getProcessors()
{
return $this->_processors;
}
+3 -3
View File
@@ -74,7 +74,7 @@ class HashRing implements IDistributionStrategy
/**
* Resets the distributor.
*/
private function reset()
private function reset()
{
unset(
$this->_ring,
@@ -216,9 +216,9 @@ class HashRing implements IDistributionStrategy
/**
* Implements a strategy to deal with wrap-around errors during binary searches.
*
* @param int $upper
* @param int $upper
* @param int $lower
* @param int $ringKeysCount
* @param int $ringKeysCount
* @return int
*/
protected function wrapAroundStrategy($upper, $lower, $ringKeysCount)
+1 -1
View File
@@ -44,7 +44,7 @@ class PipelineContext
/**
* Returns a pipeline executor depending on the kind of the underlying
* connection and the passed options.
*
*
* @param Client Client instance used by the context.
* @param array Options for the context initialization.
* @return IPipelineExecutor
+1 -1
View File
@@ -14,7 +14,7 @@ namespace Predis\Protocol;
use Predis\CommunicationException;
/**
* Exception class that identifies errors encountered while
* Exception class that identifies errors encountered while
* handling the Redis wire protocol.
*
* @author Daniele Alessandri <suppakilla@gmail.com>
+1 -1
View File
@@ -48,7 +48,7 @@ class ResponseError implements IRedisServerError
/**
* Converts the object to its string representation.
*
*
* @return string
*/
public function __toString()
+1 -1
View File
@@ -262,7 +262,7 @@ class MultiExecContext
}
/**
* Resets a transaction by UNWATCHing the keys that are being WATCHed and
* Resets a transaction by UNWATCHing the keys that are being WATCHed and
* DISCARDing the pending commands that have been already sent to the server.
*
* @return MultiExecContext
+1 -1
View File
@@ -495,7 +495,7 @@ class ClientFeaturesTestSuite extends PHPUnit_Framework_TestCase
$client->flushdb();
RC::testForClientException($this, 'TEST', function() use($client) {
$client->pipeline(function($pipe) {
$client->pipeline(function($pipe) {
$pipe->ping();
$pipe->set('foo', 'bar');
throw new Predis\ClientException("TEST");
+4 -4
View File
@@ -21,7 +21,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase
// TODO: missing test with float values for a few commands
protected function setUp()
{
{
$this->redis = RC::getConnection();
$this->redis->flushdb();
}
@@ -613,7 +613,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase
);
$this->assertEquals(
array(),
array(),
$this->redis->lrange('keyDoesNotExist', 0, 1)
);
@@ -1032,7 +1032,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase
$setB = RC::setAddAndReturn($this->redis, 'setB', array(1, 3, 4, 6, 9, 10));
$this->assertTrue(RC::sameValuesInArrays(
$setA,
$setA,
$this->redis->sinter('setA')
));
@@ -1423,7 +1423,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase
$zset = RC::zsetAddAndReturn($this->redis, 'zset', RC::getZSetArray());
$this->assertEquals(
array('a'),
array('a'),
$this->redis->zrangebyscore('zset', -10, -10)
);