Redis in Laradock
Tags: redis, docker, tutorial, laravel
Published: 2019-12-23 14:13:18

Cache is the first thing you have in mind and would do to speed-up your application performance. Any kind of cache storages are worthful, but memory is more preferable. When it come to memory, `Memcached` and `Redis` are top choiches. Memcached arguably has the higher performance, but some people prefer Redis because of its data-persistent ability. Regardless of your choice, I still go with Redis because it's what I want to tell you here and I think it's the popular one 😋

`Laradock` has Redis and PhpRedisAdmin services pre-configured and let's try these out!

### Run Redis and PhpRedisAdmin

I assume you have tried and know how to work with Laradock, if not then you can start to setup a laravel app with Laradock [here](https://dev.to/dendihandian/laradock-a-php-developer-s-best-friend-33ef).

To run the Redis and PhpRedisAdmin, simply run this `docker-compose` command:

```
docker-compose up -d redis redis-webui
```

after executing above command, check the containers status by executing `docker-compose ps` . Everything are OK if these services runs like this:

```
           Name                          Command               State                    Ports
---------------------------------------------------------------------------------------------------------------
...
laradock_redis-webui_1        tini -- php -S 0.0.0.0:80        Up      0.0.0.0:9987->80/tcp
laradock_redis_1              docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp
...
```

We could also check the amount of resources used by these container by executing `docker stats` and here are what I got:

```
CONTAINER ID        NAME                          CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
b03c9e10d43c        laradock_redis-webui_1        0.03%               4.391MiB / 3.846GiB   0.11%               726B / 0B           14.5MB / 0B         2   
244ddeb2ceb7        laradock_redis_1              0.70%               2.016MiB / 3.846GiB   0.05%               726B / 0B           7.44MB / 0B         4 
```

We can see that the containers uses small amount of resources.

### Enter Redis Console for using Redis CLI
Even if I'm about to tell you about PhpRedisAdmin later, you might want to check out how to use redis' cli commands in Laradock. To enter the console, simply run this command:

```
docker-compose exec redis bash
```

Then you will be inside the console and you can try a redis-cli command like this:

```
C:\Users\drizzer\laradock>docker-compose exec redis bash
root@82596b34b720:/data# redis-cli PING
PONG
root@82596b34b720:/data#
```

to exit the console, type `exit` and ENTER.

### Setup Redis as Cache Engine for Laravel App
To continue, make sure you have redis client installed first. It's either `Predis` or `PHPRedis`, but I will use `Predis` here. So, if you not installed predis yet, then add it to your laravel app by executing this `composer` command:

```
composer require predis/predis:^1.0
```

When you done installing `predis`, then make sure these parameters and values are set in your laravel app `.env` file:

```
...

CACHE_DRIVER=redis

REDIS_URL=redis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

...
```

Then, you can start a test to set a value to redis through laravel app. The simple one is by modifying the default laravel welcome route in `routes\web.php` like this:

```php
...

Route::get('/', function () {
    \Cache::store('redis')->put('Laradock', 'Awesome', 100);
    return view('welcome');
});

...
```

Then access your laravel app homepage once, and let's see the result in PhpRedisAdmin.

PS: the third parameter with `100` value above is the lifetime of the created cache until it destroyed automatically. 

### Accessing PhpRedisAdmin

When you accessing `http://localhost:9987` for the first time or out of the session, you will be alert-prompted to enter username and password. enter `laradock` for both and you will see the interface like this:

<img src="https://i.ibb.co/rGSk6PB/phpredisadminui.png" alt="phpredisadminui" border="0">

By default, our created cache is created in `database 0` and you will definitely see it already.

<img src="https://i.ibb.co/y4yjPxJ/test-redis.png" alt="test-redis" border="0">

_____

That's all basic usage of Redis in Laradock from me, have fun experimenting Redis in Laradock environment!

```
laravel version used: 6.0 LTS
```