feat: add `ddev redis-backend` for swappable backends, fixes #32, fixes #28
The Issue
- #32
- #28
How This PR Solves The Issue
Adds ddev redis-backend command.
TODOL add some bats tests.
Manual Testing Instructions
Using Laravel quickstart https://ddev.readthedocs.io/en/stable/users/quickstart/#laravel
mkdir my-laravel-site && cd my-laravel-site
ddev config --project-type=laravel --docroot=public
ddev start
ddev composer create-project "laravel/laravel:^12"
Get this PR add-on:
ddev dotenv set .env --cache-store=redis --redis-host=redis
ddev add-on get https://github.com/ddev/ddev-redis/tarball/20250424_stasadev_redis_backend
ddev redis-backend redis
ddev restart
Testing redis cache in Laravel:
echo "<?php
use Illuminate\Support\Facades\Route;
Route::get('/set/{key}', function ($key) {
cache()->set('test', 'foo-'.$key);
echo 'foo-'.$key;
});
Route::get('/get', function () {
echo cache()->get('test');
});" > routes/web.php
$ curl -f https://my-laravel-site.ddev.site/set/bar
using redis cache store
test=bar
$ curl -f https://my-laravel-site.ddev.site/get
using redis cache store
test=bar
And now repeat:
ddev redis-backend redis-alpine
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
ddev redis-backend valkey
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
ddev redis-backend valkey-alpine
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
ddev redis-backend redis:6
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
Do the same with optimized config:
ddev dotenv set .env --cache-store=redis --redis-host=redis --redis-password=redis
ddev add-on get https://github.com/ddev/ddev-redis/tarball/20250424_stasadev_redis_backend
ddev redis-backend redis optimized
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
ddev redis-backend redis-alpine optimized
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
ddev redis-backend valkey optimized
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
ddev redis-backend valkey-alpine optimized
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
ddev redis-backend redis:6 optimized
ddev restart
curl -f https://my-laravel-site.ddev.site/set/bar
curl -f https://my-laravel-site.ddev.site/get
Automated Testing Overview
Release/Deployment Notes
I did some manual testing, not everything is 100% compatible with redis-server CLI, some images want to accept config with -c config_file.conf, others have completely different options.
This can be overridden with command: in docker-compose.redis_extra.yaml file.
So I'll only use redis and valkey presets, as I don't need to change anything for them.
Manual testings instructions are updated.
I did try this branch for the add-on and seems to work fine!