ddev-redis icon indicating copy to clipboard operation
ddev-redis copied to clipboard

feat: add `ddev redis-backend` for swappable backends, fixes #32, fixes #28

Open stasadev opened this issue 11 months ago • 1 comments

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

stasadev avatar Apr 25 '25 14:04 stasadev

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.

stasadev avatar May 07 '25 13:05 stasadev

I did try this branch for the add-on and seems to work fine!

hanoii avatar May 27 '25 18:05 hanoii