Skip to content
Till Krüss edited this page Feb 28, 2023 · 21 revisions

Predis is a flexible and feature-complete PHP client library for the Redis key-value store.

The wiki might be somewhat outdated in places, feel free to open issues about it!

Predis requires PHP >= 7.2 and it is entirely written in PHP so it can be used without the need to build and install a native extension for the interpreter, making it also easier and faster to add new features which is great given how fast the development of Redis proceeds.

The latest stable release is can be found there and is available for download using different methods as described in the download page.

Main features

  • Wide range of Redis versions supported (from 3.0 to 7.0 and unstable) using profiles.
  • Clustering via client-side sharding using consistent hashing or custom distributors.
  • Smart support for redis-cluster (Redis >= 3.0).
  • Support for master-slave replication configurations (write on master, read from slaves).
  • Transparent key prefixing for all Redis commands.
  • Command pipelining (works on both single and aggregate connections).
  • Abstraction for Redis transactions (Redis >= 2.0) supporting CAS operations (Redis >= 2.2).
  • Abstraction for Lua scripting (Redis >= 2.6) with automatic switching between EVALSHA or EVAL.
  • Abstraction for SCAN, SSCAN, ZSCAN and HSCAN (Redis >= 2.8) based on PHP iterators.
  • Connections to Redis are established lazily by the client upon the first command.
  • Support for both TCP/IP and UNIX domain sockets and persistent connections.
  • Support for Relay
  • Support for custom connection classes for providing different network or protocol backends.
  • Flexible system for defining and registering custom sets of supported commands or profiles.

Quick tour

This quick tour gives you a quick introduction on how Predis can be configured and used. [OUTDATED: that page actually refers to Predis v0.6, we are still rewriting the whole wiki!]

Frameworks integration

Predis can be used as-is with any PHP web framework out there but sometimes it is easier to use ad-hoc extensions that make it blend nicely into their logic and common patterns. What follows is a list of such extensions created and maintained by the community:

Contributing

If you want to work on Predis, it is highly recommended that you first run the test suite in order to check that everything is OK, and report strange behaviours or bugs. When modifying Predis please make 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 (possibly with tests covering your modifications) 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.

License

The code for Predis is distributed under the terms of the MIT license.