Revista Informática

Laravel 4 desde Cero: Redis

Publicado el 07 marzo 2014 por Codehero @codeheroblog

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.

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

1234567891011 '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.

// 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); });

1234567891011121314 // 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).

// 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);

1234567 // 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);

// 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);

123456 // 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.

$boolean = Redis::set('clave', 'valor');

1   $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.

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

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

GET

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

$valor = Redis::get('clave');

1 $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.

Redis::mget(array('clave1', 'clave2', 'clave3'); // respuesta // array(3) { [0]=> string(4) "valor1" [1]=> string(5) "valor2" [2]=> NULL }

1234 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.

$borrados = Redis::del('clave'); $barrados = Redis::del(array('clave1', 'clave2', 'clave3'));

123 $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.


Volver a la Portada de Logo Paperblog