You are on page 1of 19

Construyendo aplicaciones con PHP + LUA + REDIS

Gonzalo Chacaltana Buleje gchacaltanab@outlook.com

@gchacaltanab

Antes de empezar
Los ejemplos del presente documento, requiere conocer el lenguaje de programacin PHP y los comandos bsicos de REDIS.
Puede dirigirse a la seccin de Referencias para obtener los links de donde pueda aprender sobre PHP y REDIS.

Conociendo LUA
Creado en 1993 por Roberto Ierusalimschy, Luiz Henrique de Figueiredo y Waldemar Celes, miembros del Grupo de Tecnologa en Computacin Grfica (Tecgraf) en la Pontificia Universidad Catlica de Ro de Janeiro, Brasil. Su ltima versin estable a la fecha es la 5.2.1, bajo licencia MIT.

Roberto Ierusalimschy

Conociendo LUA
Lua es un lenguaje de programacin imperativo, estructurado y muy veloz, usado en distintas aplicaciones comerciales como Adobe, videojuegos como Warcraft , Angry birds y control de hardware.

LUA significa "luna" en portugus, de ah su logo.

Caractersticas de LUA
LUA es muy rpido: es considerado uno de los lenguajes de programacin ms veloces del mundo. LUA es portable: es pequeo y corre en todas las plataformas que tengan un compilador C estndar, como UNIX, Windows, OS-X y los distintos Sistemas Operativos para mviles.

Lua no es un lenguaje orientado a objetos puro, pero proporciona meta-mecanismos para la implementacin de clases y herencia.

Caractersticas de LUA
Las variables no tienen tipo. Los datos pueden ser lgicos, enteros, nmeros de coma flotante o cadenas. Las Estructuras de datos como vectores, conjuntos, tablas hash, listas y registros pueden ser representadas utilizando la nica estructura de datos de Lua: La tabla.

Su sintaxis se basa en Scheme, SNOBOL, Modula, CLU, C++.

Instalando mdulo REDIS para PHP


Descargarse la librera de Redis para PHP , de la siguiente repositorio de Github. (https://github.com/gchacaltana/phpredis). o tambin puede clonar el repositorio con GIT: git clone https://github.com/gchacaltana/phpredis.git

Una vez descargado, ingresamos al directorio principal de la librera y ejecutamos desde nuestro terminal.
$>sudo apt-get install php5-dev $>phpize $>./configure [--enable-redis-igbinary] $>make && make install

Instalando mdulo REDIS para PHP


Copia el archivo redis.so en la siguiente ruta:
$>sudo cp /path/redis.so /etc/php5/conf.d/

Luego debes editar el php.ini, agregando:


extension=redis.so

Y reinicias el servidor web.


$>sudo service apache2 restart (para apache)

$>sudo service ngnix restart (para ngnix)

Instalando mdulo REDIS para PHP


En la informacin del phpinfo, debe aparecer el modulo Redis.

Ejemplo: Usuarios en lnea.


Como ejemplo, vamos a utilizar Redis para almacenar el nombre de usuario y la fecha de su ltima conexin a nuestro Sistema, para mostrar cuantos usuarios estn en lnea, de esta forma evitamos realizar repetidas consultas a nuestra base de datos (MySQL), ya que REDIS es un motor de base de datos en memoria RAM.

Creando un sorted set en Redis


Iniciamos el servicio de redis en nuestro servidor:
$> sudo service redis_6379 start

Ingresamos a Redis y podemos crear una lista ordenada llamada usersonline


$>redis-cli Redis 127.0.0.1:6379> zadd usersonline 100 gchacaltanab Redis 127.0.0.1:6379> zadd usersonline 101 demo Redis 127.0.0.1:6379> zadd usersonline 102 pepito

Conectando a Redis

Insertando data a Redis

Obteniendo data de Redis

Obteniendo cantidad total de una lista ordenada en Redis.

Script LUA para eliminar elementos de una lista en Redis.

Ejecutando LUA Script desde PHP y REDIS.

PHP + REDIS + LUA.


Construir aplicaciones web usando REDIS + LUA te permite acelerar el tiempo de respuesta de las transacciones que puedas requerir con alguna base de datos relacional convencional, teniendo en cuenta para que tipo de soluciones necesitas almacenar informacin en memoria RAM.

Redis de por si es muy rpido y aplicando LUA como procedimiento almacenado, para ejecutar mltiples tareas, mejora la performance de Redis y de la aplicacin.

Referencias
Documentacin de LUA. http://www.lua.org/docs.html

LUA Edit. http://luaedit.sourceforge.net/download.html Documentacin de Redis. http://redis.io/documentation


Librera PHP-REDIS. https://github.com/gchacaltana/phpredis Aprendiendo REDIS en 20 minutos. https://speakerdeck.com/gchacaltana/aprendiendo-redis-en-20minutos

You might also like