construyendo aplicaciones web con php + lua + redis

19
Construyendo aplicaciones con PHP + LUA + REDIS Gonzalo Chacaltana Buleje [email protected] @gchacaltanab

Upload: gonzalo-chacaltana

Post on 13-Dec-2014

495 views

Category:

Technology


2 download

DESCRIPTION

Guía de como construir aplicaciones web con PHP, usando REDIS como motor de base de datos en memoria RAM y LUA como procedimiento almacenado de REDIS.

TRANSCRIPT

Page 1: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Construyendo aplicaciones

con PHP + LUA + REDIS

Gonzalo Chacaltana Buleje

[email protected]

@gchacaltanab

Page 2: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Antes de empezar

• Los ejemplos del presente documento, requiere

conocer el lenguaje de programación PHP y los

comandos básicos de REDIS.

• Puede dirigirse a la sección de

“Referencias” para obtener los

links de donde pueda aprender

sobre PHP y REDIS.

Page 3: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Conociendo LUA

• Creado en 1993 por Roberto Ierusalimschy, Luiz

Henrique de Figueiredo y Waldemar Celes, miembros

del Grupo de Tecnología en Computación Gráfica

(Tecgraf) en la Pontificia Universidad Católica de Río de

Janeiro, Brasil.

• Su última versión estable a la fecha

es la 5.2.1, bajo licencia MIT.

Roberto

Ierusalimschy

Page 4: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Lua es un lenguaje de programación imperativo,

estructurado y muy veloz, usado en distintas aplicaciones

comerciales como Adobe, videojuegos como Warcraft ,

Angry birds y control de hardware.

Conociendo LUA

LUA significa "luna" en portugués,

de ahí su logo.

Page 5: Construyendo Aplicaciones Web con PHP + LUA + REDIS

• LUA es muy rápido: es considerado uno de los lenguajes

de programación más veloces del mundo.

• LUA es portable: es pequeño y corre en todas las

plataformas que tengan un compilador C estándar,

como UNIX, Windows, OS-X y los distintos Sistemas

Operativos para móviles.

• Lua no es un lenguaje orientado a objetos puro, pero

proporciona meta-mecanismos para la implementación

de clases y herencia.

Características de LUA

Page 6: Construyendo Aplicaciones Web con PHP + LUA + REDIS

• Las variables no tienen tipo.

• Los datos pueden ser lógicos, enteros, números 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++.

Características de LUA

Page 7: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Instalando módulo REDIS para PHP

• Descargarse la librería de Redis para PHP, de la siguiente repositorio de Github. (https://github.com/gchacaltana/phpredis).

o también puede clonar el repositorio con GIT:

git clone https://github.com/gchacaltana/phpredis.git

• Una vez descargado, ingresamos al directorio principal de la librería y ejecutamos desde nuestro terminal.

$>sudo apt-get install php5-dev

$>phpize

$>./configure [--enable-redis-igbinary]

$>make && make install

Page 8: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Instalando módulo 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)

Page 9: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Instalando módulo REDIS para PHP

En la información del phpinfo, debe aparecer

el modulo Redis.

Page 10: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Ejemplo: Usuarios en línea.

• Como ejemplo, vamos a utilizar Redis para almacenar

el nombre de usuario y la fecha de su última conexión a

nuestro Sistema, para mostrar cuantos usuarios están

en línea, 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.

Page 11: Construyendo Aplicaciones Web con PHP + LUA + REDIS

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

Page 12: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Conectando a Redis

Page 13: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Insertando data a Redis

Page 14: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Obteniendo data de Redis

Page 15: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Obteniendo cantidad total de una

lista ordenada en Redis.

Page 16: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Script LUA para eliminar elementos

de una lista en Redis.

Page 17: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Ejecutando LUA Script desde PHP y

REDIS.

Page 18: Construyendo Aplicaciones Web con PHP + LUA + 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 información en memoria RAM.

Redis de por si es muy rápido y

aplicando LUA como procedimiento

almacenado, para ejecutar múltiples

tareas, mejora la performance de Redis y

de la aplicación.

Page 19: Construyendo Aplicaciones Web con PHP + LUA + REDIS

Referencias

• Documentación de LUA.

http://www.lua.org/docs.html

• LUA Edit. http://luaedit.sourceforge.net/download.html

• Documentación de Redis. http://redis.io/documentation

• Librería PHP-REDIS. https://github.com/gchacaltana/phpredis

• Aprendiendo REDIS en 20 minutos.

https://speakerdeck.com/gchacaltana/aprendiendo-redis-en-20-minutos