|
14 سال پیش | |
---|---|---|
bin | 14 سال پیش | |
examples | 14 سال پیش | |
lib | 14 سال پیش | |
test | 14 سال پیش | |
CHANGELOG | 14 سال پیش | |
LICENSE | 14 سال پیش | |
README.markdown | 14 سال پیش | |
TODO | 14 سال پیش | |
UNSTABLE | 14 سال پیش | |
VERSION | 14 سال پیش | |
phpunit.xml.dist | 14 سال پیش |
Predis is a flexible and feature-complete PHP (>= 5.3) client library for the Redis key-value store.
For a version compatible with PHP 5.2 you must use the backported version of latest release in the 0.6.x series. Please refer to the TODO file to see which issues are still pending and what is due to be implemented soon in Predis.
See the official wiki of the project for a more complete coverage of all the features available in Predis.
Predis relies on the autoloading features of PHP and complies with the PSR-0 standard for interoperability with the major frameworks and libraries. When used in simple projects or scripts you might need to define an autoloader function:
spl_autoload_register(function($class) {
$file = PREDIS_BASE_PATH . strtr($class, '\\', '/') . '.php';
if (file_exists($file)) {
require $file;
return true;
}
});
Optionally, you can generate a single PHP file that holds every class (just like older versions of Predis) by launching the createSingleFile.php script from the bin directory of the repository. In this way you can load Predis in your scripts simply by using functions such as require and include.
You don't have to specify a tcp host and port when connecting to Redis instances running on the localhost on the default port:
$redis = new Predis\Client();
$redis->set('library', 'predis');
$value = $redis->get('library');
Pipelining helps with performances when there is the need to issue many commands to a server in one go:
$redis = new Predis\Client('redis://10.0.0.1:6379/');
$replies = $redis->pipeline(function($pipe) {
$pipe->ping();
$pipe->incrby('counter', 10);
$pipe->incrby('counter', 30);
$pipe->get('counter');
});
Predis supports data sharding using consistent-hashing on keys on the client side. Furthermore, a pipeline can be initialized on a cluster of redis instances in the same exact way they are created on single connection. Sharding is still transparent to the user:
$redis = new Predis\Client(array(
array('host' => '10.0.0.1', 'port' => 6379),
array('host' => '10.0.0.2', 'port' => 6379)
));
$replies = $redis->pipeline(function($pipe) {
for ($i = 0; $i < 1000; $i++) {
$pipe->set("key:$i", str_pad($i, 4, '0', 0));
$pipe->get("key:$i");
}
});
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:
class BrandNewRedisCommand extends Predis\Command {
public function getCommandId() { return 'NEWCMD'; }
}
$redis = new Predis\Client();
$redis->getProfile()->registerCommand('BrandNewRedisCommand', 'newcmd');
$redis->newcmd();
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" 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 too, even though they are not the preferred way to contribute to Predis.
The code for Predis is distributed under the terms of the MIT license (see LICENSE).