Skip to content

humanmade/wp-redis-predis-client

Repository files navigation

WP Redis - Predis Client
An alternative Redis client for use with WP Redis. Enables TLS connections.
Build status
A Human Made project. Maintained by @nathanielks.

WP Redis - Predis Client

This is a package that enables the use of Predis as a Redis Client as opposed to PHPRedis for WP Redis. Predis has the distinct advantage of connecting to Redis via TLS, encrypting traffic in-transit. Requires WP Redis >= 0.7.0.

Getting Started

Requiring Files

Composer

When using Composer, functions.php file will automatically be loaded whenever you include Composer's autoloader in your project.

Manually Requiring

The only file needing require_onceing for WP Predis to work correctly is functions.php (which is automatically included via vendor/autoload.php, which is generated by Composer). Download this repo somewhere in your project, run composer install, and include vendor/autoload.php somewhere early (such as wp-config.php):

require_once '/path/to/wp-redis-predis-client/vendor/autoload.php';

Object Cache stub

Now that files have been included, it's recommended you use the included object-cache.php file instead of the one included with WP Redis. It will add the required filters for WP Predis to work and then include WP Redis' object-cache.php file. Once object-cache.php is in wp-content (or whatever content directory you are using), you're good to go!

Configuring Predis

WP Redis - Predis Client adheres to WP Redis' configuration details. Predis also takes an additional argument, ssl, for configuring TLS connections. See PHP's SSL Context options for more details.

global $redis_server;
$redis_server = array(
    'host' => '127.0.0.1',
    'port' => 6379,
    'ssl'  => array(
        'local_cert' => '/path/to/certificate_and_key.pem',
        'verify_peer' => true,
    ),
);

Requirements

  • PHP 8.2 or higher
  • Predis 3.2.0 or higher
  • WordPress (when used in production)

Testing

This package includes comprehensive tests for both standalone and WordPress integration scenarios.

Quick Test

Run the test suite locally (requires Redis):

# Install dependencies
composer install

# Start Redis
docker run -d --name redis-test -p 6379:6379 redis:latest

# Run tests
vendor/bin/phpunit

# Stop Redis
docker stop redis-test && docker rm redis-test

Docker Testing (Multiple PHP Versions)

Test across multiple PHP versions using Docker Compose:

# Start services
docker compose up -d redis

# Run tests with PHP 8.2
docker compose run --rm test-php82 vendor/bin/phpunit

# Run tests with PHP 8.3
docker compose run --rm test-php83 vendor/bin/phpunit

# Run tests with PHP 8.4
docker compose run --rm test-php84 vendor/bin/phpunit

# Stop services
docker compose down

For detailed testing documentation, see TESTING.md.

About

An alternative Redis client for use with WP Redis. Enables TLS connections.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 11