post thumbnail

Laravel 4 desde Cero: Redis

Publicado Por: Ramses Velasquez, El 07/03/2014


Detalles del Curso:

Dificultad: Novato

Duración: 20 min


En este nuevo capítulo de Laravel 4 desde cero hablaremos sobre como realizar una conexión y ejecutar comandos en una instancia de Redis. Para saber más acerca de esta base de datos de clave/valor y como realizar su instalación y configuración invito a leer el siguiente tutorial Cómo instalar, configurar y usar Redis – Parte I. Laravel viene con soporte para Redis y hace que la configuración y conexión para realizar operaciones se lleve acabo de una manera muy sencilla.

Configuración

Una vez que tengamos instalada y corriendo nuestra instancia de Redis vamos a configurar nuestra conexión en Laravel. Para esto vamos al archivo app/config/database.php en donde conseguiremos algo como lo siguiente.

<?php
'redis' => array(
        'cluster' => false,
        'default' => array(
            'host'     => '127.0.0.1',
            'port'     => 6379,
            'database' => 0,
        ),

    ),
?>

Si hemos seguido el tutorial de Redis y no hemos cambiado la configuración por defecto, estos datos ya deberían servirnos para realizar nuestra conexión. Quizás el parámetro cluster aparezca como True, pero lo cambiamos a false porque no nos interesa tratar a nuestra base de datos como cluster o hacer replicación en estos momentos.

Si hemos realizado correctamente la instalación y el levantamiento de la instancia de Redis, más la configuración de Laravel entonces ya podemos utilizar las funciones de Laravel para acceder a la base de datos. Hagamos una primera prueba muy sencilla para corroborar que todo funciona como debería.

<?php
// routes.php

Route::get('/', function(){

    // creamos un clave sitio con valor Codehero en la base de datos
    Redis::set('sitio', 'Codehero');

    // buscamos el valor de la clave sitio en la base de datos
    $valor = Redis::get('sitio');

    // imprimimos en pantalla el valor devuelto con la clave sitio 
    dd($valor);

});
?>

Si todo esta como debería, entonces debemos estar viendo en nuestras pantallas de nuestros exploradores la palabras Codehero.

Ejecutar Comandos

Veamos cuales son las dos maneras que tenemos para ejecutar comandos en Redis y para esto vamos a utilizar el ejemplo anterior(insertar una clave/valor y después recuperarla).

<?php
// La primera manera es obteniendo una instancia de la conexión
$redis = Redis::connection();

// luego con esta instancia ejecutamos métodos de Redis
$redis->set('sitio', 'Codehero');
$valor = $redis->get('sitio');
dd($valor);

?>
<?php
// La segunda manera es haciendo uso de los métodos de manera estática
// sin tener que obtener una instancia de la conexión 
Redis::set('sitio', 'Codehero');
$valor = Redis::get('sitio');

dd($valor);
?>

Comandos básicos

Ahora que sabemos como ejecutar los comandos, vamos a ver cuales son los principales que Laravel nos brinda.

SET

Esta función nos sirve para insertar una clave y un valor en la base de datos y nos devuelve un boolean confirmando si logro guardar la información.

<?php
$boolean = Redis::set('clave', 'valor');
?>

MSET

Con esta función podemos insertar varios valores en un solo comando, recibe como parámetro un arreglo con los valores y las claves.

<?php
$boolean = Redis::mset(array('clave1'=>'valor1', 'clave2'=>'valor2'));
?>

GET

Esta función nos sirve para obtener un valor pasando como parámetro su clave.

<?php
$valor = Redis::get('clave');
?>

MGET

Con esta función podemos obtener varios valores en una misma llamada, como parámetro se envía un arreglo con todas las claves a buscar. La función retorna un arreglo con todas los valores obtenidos en las posiciones de las claves solicitadas, en caso de no conseguir un valor coloca NULL.

<?php
Redis::mget(array('clave1', 'clave2', 'clave3');

// respuesta 
// array(3) { [0]=> string(4) "valor1" [1]=> string(5) "valor2" [2]=> NULL }
?>

DEL

Esta función sirve para borrar una o varias claves simultáneamente, como respuesta se obtiene el número de valores que se borraron.

<?php
$borrados = Redis::del('clave');

$barrados = Redis::del(array('clave1', 'clave2', 'clave3'));
?>

Conclusión

Con lo aprendido en este capítulo podemos dar nuestro primeros pasos para utilizar una base de datos Redis en nuestros proyectos de Laravel. Para mas información sobre las funciones que se pueden utilizar recomiendo revisar la documentación de la librería que usa Laravel Predis. Cualquier duda o comentario estaré atento a la sección de comentarios.


¿Te ha gustado esta publicación?

Compártela:

Por Ramses Velasquez

Conoce más sobre este autor aquí


comments powered by Disqus