How To Create Another Redis Server Instance On Same Server (managed By Laravel Forge)
Laravel Horizon is coming, so I'm looking to switch my queues from beanstalkd to Redis to take advantage of better queue monitoring.
However, occasionally I have to perform php artisan cache:clear
. But if I do so, since my queue is now in Redis, it will wipe out all my jobs, as discussed in this GitHub issue.
The suggestion was to make a separate Redis instance. Here are my questions:
- How do I create multiple Redis server instances in my Laravel Forge managed server?
- What should I change in my config files so that session and cache point to one Redis server instance, and my queue points to a different Redis server instance? (now know the answer to this, see link in edit)
- Is it correct that
php artisan cache:clear
will now only wipe out data in the Redis instance that my cache is using, and my queue worker Redis server will not be affected?
Edit
Upon searching the internet further, I've come across this discussion.
- So I think I do not really need to create a separate Redis server instance, just use a different Redis DB number. Is this correct?
- Does
php artisan cache:clear
wipe out only that DB number? Other DB numbers on the same instance are not affected?
Answer
Does php artisan cache:clear wipe out only that DB number?
This is accurate. The cache:clear
command sends a FLUSHDB
command to Redis under the hood which only erases the data in the Redis database selected for storing cache data.
The standard way to isolate data in a single Redis instance for each of Laravel's services is to assign a different database for each service in config/database.php:
'redis' => [
'default' => [
...
'database' => 0,
],
'cache' => [
...
'database' => 1,
],
],
The configuration above instructs Laravel to use database 1
for storing cache data, and database 0
for all other Redis operations. Then, when we want to clear the cache—using php artisan cache:clear
or app('cache')->flush()
, etc.—Laravel won't erase the other data stored in Redis.
We can extend this configuration pattern by creating separate connections that specify different Redis databases for each of the session, queue, and broadcasting APIs. This provides more flexibility to manage the data as our application grows.
Of course, for large applications, we might even use different Redis servers for each of these services to improve scalability as our application data exceeds the limitations of a single Redis server.
Related Questions
- → "failed to open stream" error when executing "migrate:make"
- → October CMS Plugin Routes.php not registering
- → OctoberCMS Migrate Table
- → OctoberCMS Rain User plugin not working or redirecting
- → October CMS Custom Mail Layout
- → October CMS - How to correctly route
- → October CMS - Conditionally Load a Different Page
- → Make a Laravel collection into angular array (octobercms)
- → In OctoberCMS how do you find the hint path?
- → How to register middlewares in OctoberCMS plugin?
- → Validating fileupload(image Dimensions) in Backend Octobercms
- → OctoberCMS Fileupload completely destroys my backend
- → How do I call the value from another backed page form and use it on a component in OctoberCms