clue/redis-react
Async Redis client implementation, built on top of ReactPHP.
v2.8.0
21M downloads/mo
#398 most downloaded on Packagist
clue/reactphp-redis
What this package is like to depend on
Last release 2 years ago
no release in 18 months
Ships fairly regularly
a new release about every 12 months
Nearly every release is documented
notes for 17 of 17 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
17 releases · first in 2014
0 releases in the last 12 months
see the full history below
Release timeline
17 releases · May 2014 to Jan 2025Releases
latest 17-
v2.8.003 Jan 2025Release notes
Open source →This is a compatibility release that contains backported features from the
3.xbranch.
Once v3 is released, it will be the way forward for this project. -
v2.7.005 Jan 2024Release notes
Open source →This is a compatibility release that contains backported features from the
3.xbranch.
Once v3 is released, it will be the way forward for this project. -
v2.6.009 May 2022Release notes
Open source →-
Improve documentation and CI configuration.
(#123 and #125 by @SimonFrings)
Release notes
Open source →-
Feature: Support PHP 8.1 release. (#119 by @clue)
-
Improve documentation and CI configuration. (#123 and #125 by @SimonFrings)
-
v2.5.031 Aug 2021Release notes
Open source →-
Feature: Simplify usage by supporting new default loop and new Socket API.
(#114 and #115 by @SimonFrings)// old (still supported) $factory = new Clue\React\Redis\Factory($loop); // new (using default loop) $factory = new Clue\React\Redis\Factory();
-
Feature: Improve error reporting, include Redis URI and socket error codes in all connection errors.
(#116 by @clue) -
Documentation improvements and updated examples.
(#117 by @clue, #112 by @Nyholm and #113 by @PaulRotmann) -
Improve test suite and use GitHub actions for continuous integration (CI).
(#111 by @SimonFrings)
Release notes
Open source →-
Feature: Simplify usage by supporting new default loop and new Socket API. (#114 and #115 by @SimonFrings)
// old (still supported) $factory = new Clue\React\Redis\Factory($loop); // new (using default loop) $factory = new Clue\React\Redis\Factory(); -
Feature: Improve error reporting, include Redis URI and socket error codes in all connection errors. (#116 by @clue)
-
Documentation improvements and updated examples. (#117 by @clue, #112 by @Nyholm and #113 by @PaulRotmann)
-
Improve test suite and use GitHub actions for continuous integration (CI). (#111 by @SimonFrings)
-
-
v2.4.025 Sep 2020Release notes
Open source →-
Fix: Fix dangling timer when lazy connection closes with pending commands. (#105 by @clue)
-
Improve test suite and add
.gitattributesto exclude dev files from exports. Prepare PHP 8 support, update to PHPUnit 9 and simplify test matrix. (#96 and #97 by @clue and #99, #101 and #104 by @SimonFrings)
-
-
v2.3.011 Mar 2019Release notes
Open source →-
Feature: Add new
createLazyClient()method to connect only on demand and
implement "idle" timeout to close underlying connection when unused.
(#87 and #88 by @clue and #82 by @WyriHaximus)$client = $factory->createLazyClient('redis://localhost:6379'); $client->incr('hello'); $client->end();
-
Feature: Support cancellation of pending connection attempts.
(#85 by @clue)$promise = $factory->createClient($redisUri); $loop->addTimer(3.0, function () use ($promise) { $promise->cancel(); });
-
Feature: Support connection timeouts.
(#86 by @clue)$factory->createClient('localhost?timeout=0.5');
-
Feature: Improve Exception messages for connection issues.
(#89 by @clue)$factory->createClient('redis://localhost:6379')->then( function (Client $client) { // client connected (and authenticated) }, function (Exception $e) { // an error occurred while trying to connect (or authenticate) client echo $e->getMessage() . PHP_EOL; if ($e->getPrevious()) { echo $e->getPrevious()->getMessage() . PHP_EOL; } } );
-
Improve test suite structure and add forward compatibility with PHPUnit 7 and PHPUnit 6
and test against PHP 7.1, 7.2, and 7.3 on TravisCI.
(#83 by @WyriHaximus and #84 by @clue) -
Improve documentation and update project homepage.
(#81 and #90 by @clue)
Release notes
Open source →-
Feature: Add new
createLazyClient()method to connect only on demand and implement "idle" timeout to close underlying connection when unused. (#87 and #88 by @clue and #82 by @WyriHaximus)$client = $factory->createLazyClient('redis://localhost:6379'); $client->incr('hello'); $client->end(); -
Feature: Support cancellation of pending connection attempts. (#85 by @clue)
$promise = $factory->createClient($redisUri); $loop->addTimer(3.0, function () use ($promise) { $promise->cancel(); }); -
Feature: Support connection timeouts. (#86 by @clue)
$factory->createClient('localhost?timeout=0.5'); -
Feature: Improve Exception messages for connection issues. (#89 by @clue)
$factory->createClient('redis://localhost:6379')->then( function (Client $client) { // client connected (and authenticated) }, function (Exception $e) { // an error occurred while trying to connect (or authenticate) client echo $e->getMessage() . PHP_EOL; if ($e->getPrevious()) { echo $e->getPrevious()->getMessage() . PHP_EOL; } } ); -
Improve test suite structure and add forward compatibility with PHPUnit 7 and PHPUnit 6 and test against PHP 7.1, 7.2, and 7.3 on TravisCI. (#83 by @WyriHaximus and #84 by @clue)
-
Improve documentation and update project homepage. (#81 and #90 by @clue)
-
-
v2.2.024 Jan 2018Release notes
Open source →-
Feature: Support communication over Unix domain sockets (UDS) (#70 by @clue)
// new: now supports redis over Unix domain sockets (UDS) $factory->createClient('redis+unix:///tmp/redis.sock');
-
-
v2.1.025 Sep 2017Release notes
Open source →-
Feature: Update Socket dependency to support hosts file on all platforms
(#66 by @clue)This means that connecting to hosts such as
localhost(and for example
those used for Docker containers) will now work as expected across all
platforms with no changes required:$factory->createClient('localhost');
Release notes
Open source →-
Feature: Update Socket dependency to support hosts file on all platforms (#66 by @clue)
This means that connecting to hosts such as
localhost(and for example those used for Docker containers) will now work as expected across all platforms with no changes required:$factory->createClient('localhost');
-
-
v2.0.020 Sep 2017Release notes
Open source →A major compatibility release to update this package to support all latest
ReactPHP components!This update involves a minor BC break due to dropped support for legacy
versions. We've tried hard to avoid BC breaks where possible and minimize impact
otherwise. We expect that most consumers of this package will actually not be
affected by any BC breaks, see below for more details.-
BC break: Remove all deprecated APIs, default to
redis://URI scheme
and drop legacy SocketClient in favor of new Socket component.
(#61 by @clue)All of this affects the
Factoryonly, which is mostly considered
"advanced usage". If you're affected by this BC break, then it's
recommended to first update to the intermediary v1.2.0 release, which
allows you to use theredis://URI scheme and a standard
ConnectorInterfaceand then update to this version without causing a
BC break. -
BC break: Remove uneeded
dataevent and support for advancedMONITOR
command for performance and consistency reasons and
remove underdocumentedisBusy()method.
(#62, #63 and #64 by @clue) -
Feature: Forward compatibility with upcoming Socket v1.0 and v0.8 and EventLoop v1.0 and Evenement v3
(#65 by @clue)
Release notes
Open source →A major compatibility release to update this package to support all latest ReactPHP components!
This update involves a minor BC break due to dropped support for legacy versions. We've tried hard to avoid BC breaks where possible and minimize impact otherwise. We expect that most consumers of this package will actually not be affected by any BC breaks, see below for more details.
-
BC break: Remove all deprecated APIs, default to
redis://URI scheme and drop legacy SocketClient in favor of new Socket component. (#61 by @clue)All of this affects the
Factoryonly, which is mostly considered "advanced usage". If you're affected by this BC break, then it's recommended to first update to the intermediary v1.2.0 release, which allows you to use theredis://URI scheme and a standardConnectorInterfaceand then update to this version without causing a BC break. -
BC break: Remove unneeded
dataevent and support for advancedMONITORcommand for performance and consistency reasons and remove underdocumentedisBusy()method. (#62, #63 and #64 by @clue) -
Feature: Forward compatibility with upcoming Socket v1.0 and v0.8 and EventLoop v1.0 and Evenement v3 (#65 by @clue)
-
-
v1.2.019 Sep 2017Release notes
Open source →-
Feature: Support
redis[s]://URI scheme and deprecate legacy URIs
(#60 by @clue)$factory->createClient('redis://:secret@localhost:6379/4'); $factory->createClient('redis://localhost:6379?password=secret&db=4');
-
Feature: Factory accepts Connector from Socket and deprecate legacy SocketClient
(#59 by @clue)If you need custom connector settings (DNS resolution, TLS parameters, timeouts,
proxy servers etc.), you can explicitly pass a custom instance of the
ConnectorInterface:$connector = new \React\Socket\Connector($loop, array( 'dns' => '127.0.0.1', 'tcp' => array( 'bindto' => '192.168.10.1:0' ), 'tls' => array( 'verify_peer' => false, 'verify_peer_name' => false ) )); $factory = new Factory($loop, $connector);
Release notes
Open source →-
Feature: Support
redis[s]://URI scheme and deprecate legacy URIs (#60 by @clue)$factory->createClient('redis://:secret@localhost:6379/4'); $factory->createClient('redis://localhost:6379?password=secret&db=4'); -
Feature: Factory accepts Connector from Socket and deprecate legacy SocketClient (#59 by @clue)
If you need custom connector settings (DNS resolution, TLS parameters, timeouts, proxy servers etc.), you can explicitly pass a custom instance of the
ConnectorInterface:$connector = new \React\Socket\Connector($loop, array( 'dns' => '127.0.0.1', 'tcp' => array( 'bindto' => '192.168.10.1:0' ), 'tls' => array( 'verify_peer' => false, 'verify_peer_name' => false ) )); $factory = new Factory($loop, $connector);
-
-
v1.1.018 Sep 2017Release notes
Open source →-
Feature: Update SocketClient dependency to latest version (#58 by @clue)
-
Improve test suite by adding PHPUnit to require-dev, fix HHVM build for now again and ignore future HHVM build errors, lock Travis distro so new defaults will not break the build and skip functional integration tests by default (#52, #53, #56 and #57 by @clue)
-
-
v1.0.020 May 2016Release notes
Open source →-
First stable release, now following SemVer
-
BC break: Consistent public API, mark internal APIs as such (#38 by @clue)
// old $client->on('data', function (MessageInterface $message, Client $client) { // process an incoming message (raw message object) }); // new $client->on('data', function (MessageInterface $message) use ($client) { // process an incoming message (raw message object) });
Contains no other changes, so it's actually fully compatible with the v0.5.2 release.
-
-
v0.5.220 May 2016Release notes
Open source →-
Fix: Do not send empty SELECT statement when no database has been given (#35, #36 by @clue)
-
Improve documentation, update dependencies and add first class support for PHP 7
-
-
v0.5.112 Jan 2015Release notes
Open source →- Fix: Fix compatibility with react/promise v2.0 for monitor and PubSub commands. (#28)
-
v0.5.012 Nov 2014Release notes
Open source →-
Feature: Support PubSub commands (P)(UN)SUBSCRIBE and watching for "message", "subscribe" and "unsubscribe" events (#24)
-
Feature: Support MONITOR command and watching for "monitor" events (#23)
-
Improve documentation, update locked dependencies and add first class support for HHVM (#25, #26 and others)
-
-
v0.4.025 Aug 2014Release notes
Open source →-
BC break: The
Clientclass has been renamed toStreamingClient. Added newClientinterface. (#18 and #19) -
BC break: Rename
messageevent todata. (#21) -
BC break: The
Factorynow accepts aLoopInterfaceas first argument. (#22) -
Fix: The
closeevent will be emitted once when invoking theClient::close()method or when the underlying stream closes. (#20) -
Refactored code, improved testability, extended test suite and better code coverage. (#11, #18 and #20)
Note: This is an intermediary release to ease upgrading to the imminent v0.5 release.
-
-
v0.3.031 May 2014Release notes
Open source →- First tagged release
Note: Starts at v0.3 because previous versions were not tagged. Leaving some room in case they're going to be needed in the future.