Construyendo Aplicaciones Web con PHP + LUA + REDIS
-
Upload
gonzalo-chacaltana -
Category
Technology
-
view
490 -
download
2
description
Transcript of Construyendo Aplicaciones Web con PHP + LUA + REDIS
![Page 1: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/1.jpg)
Construyendo aplicaciones
con PHP + LUA + REDIS
Gonzalo Chacaltana Buleje
@gchacaltanab
![Page 2: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/2.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/3.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/4.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/5.jpg)
• 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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/6.jpg)
• 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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/7.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/8.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/9.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/10.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/11.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/12.jpg)
Conectando a Redis
![Page 13: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/13.jpg)
Insertando data a Redis
![Page 14: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/14.jpg)
Obteniendo data de Redis
![Page 15: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/15.jpg)
Obteniendo cantidad total de una
lista ordenada en Redis.
![Page 16: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/16.jpg)
Script LUA para eliminar elementos
de una lista en Redis.
![Page 17: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/17.jpg)
Ejecutando LUA Script desde PHP y
REDIS.
![Page 18: Construyendo Aplicaciones Web con PHP + LUA + REDIS](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/18.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020115/54923084b47959f2248b5876/html5/thumbnails/19.jpg)
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