SlideShare una empresa de Scribd logo
Monday, June 24, 13
Monday, June 24, 13
¿Quién soy?
• Backend Core Tech Lead @ Socialpoint
Arquitectura y desarrollo de aplicaciones que
eficientemente respondan peticiones de millones de
usuarios cada día
• Redis Fan
• Made in Cuba
• Poco original eligiendo memes
• @ronnylt
Monday, June 24, 13
Hablemos de algunos
de nuestros desafíos
como desarrolladores
Monday, June 24, 13
Tenemos aplicaciones que
por su naturaleza no es
posible usar una cache
Monday, June 24, 13
Tenemos cientos, miles,
de usuarios concurrentes y
necesitamos una solución
escalable para almacenar las
sesiones
Monday, June 24, 13
Queremos saber quién
y cómo se está usando
nuestra aplicación
Monday, June 24, 13
Redis WTF?
Redis FTW!
Monday, June 24, 13
Agenda
• Redis y sus características
• Entendiendo Redis
• Conectando desde PHP
• Integrando Redis en Symfony2
• Casos de uso
Monday, June 24, 13
REDISYSUS
CARACTERÍSTICAS
Monday, June 24, 13
¿Qué es Redis?
• REmote DIctionary Server
• Creado en 2009 por Salvatore Sanfilipo
(@antirez)
• Open source
Monday, June 24, 13
Mejor definido como:
NoSQL
Monday, June 24, 13
Monday, June 24, 13
advanced
in-memory
key-value
data-structure server
Redis
Monday, June 24, 13
Data Structure Server
• Cadenas
• Listas
• Conjuntos
• Conjuntos ordenados
• Hashes (hash maps)
Monday, June 24, 13
In-memory Database
• Datos deben caber en memoria
• Persistencia configurable
• “Memory is the new disc, disc is the new
tape”
Monday, June 24, 13
Advanced key-value
store database
• Persistencia (snapshot, append-only file)
• Replicación (master/slave)
• Transacciones
• Pipelining
• Publisher/Subscriber (pub/sub)
• Lua scripting
Monday, June 24, 13
Ideal para
• Analíticas real-time
• Tracking
• Caching server (memcached on steroid)
• Colas de trabajo
• Escritura/Lectura intensiva (sesiones)
Monday, June 24, 13
ENTENDIENDO
REDIS
Monday, June 24, 13
Claves y valores
• Los datos (values) son refereciados a través
de claves (keys)
• Los datos pueden ser recuperados solo si
conocemos el nombre de la clave
Monday, June 24, 13
Claves
(keys)
• Únicas dentro de la BD
• Binary safe string
• Claves muy grandes pueden impactar en el
rendimimiento
• Claves muy pequeñas no aportan mucho
(u:123:n vs user:123:name)
Monday, June 24, 13
No es un RMDBS
• No hay consultas (queries)
• No hay índices
• No hay esquemas
Monday, June 24, 13
Monday, June 24, 13
Comandos
• Lenguaje de comandos fácil de usar y de
aprender
• Los comandos (en su mayoría) son aplicables
a un tipo de datos específico
Monday, June 24, 13
Tipos de datos
Cadenas
Listas
Conjuntos
Conjuntos ordenados
Hashes
Data structure server
Monday, June 24, 13
Cadenas
• Tipo de dato simple (cualquier cadena binary-safe)
• Tamaño máximo de 512 MB
key string
GET, SET, STRLEN,APPEND, GETRANGE, SETRANGE
http://redis.io/commands#string
Monday, June 24, 13
Casos de uso cadenas
• Almacenamiento de cualquier dato (serializado):
GET, SET
• Vector de acceso aleatorio con GETRANGE,
SETRANGE
• Mapa de bits usando GETBIT, SETBIT,
BITCOUNT
Monday, June 24, 13
Casos de uso cadenas
• Contadores atómicos con:
INCR, DECR
INCRBY, DECRBY
INCRFLOATBY
INCR dowloads:item:123
=> 450
INCR dowloads:item:123
=> 451
Monday, June 24, 13
Listas
• Listado de cadenas donde el orden es importante
• Operaciones de inserción por la izquierda y por
la derecha o por posición
• Máxima longitud de 2^32 -1 (+4 billones)
key s2s1 s3...
http://redis.io/commands#list
Monday, June 24, 13
Casos de uso Listas
• Representación de colas (insertando por la
derecha, leyendo por la izquierda) RPUSH, LPOP
• Representación de pilas (insertando y leyendo por
la izquierda) LPUSH, LPOP
• Comandos blocking BLPOP, BRPOP, BRPOPLPUSH
Monday, June 24, 13
Conjuntos
• Colección de elementos únicos donde el
orden no importa
• Operaciones típicas de conjuntos sobre los
datos
key
blue
green
red
black
Monday, June 24, 13
Operaciones de
conjuntos
SINTERSECT SUNION
SDIFF
Monday, June 24, 13
Casos de uso
Conjuntos
• Representación de relaciones
• Tracking de sucesos únicos
• Cualquier problema donde por su naturaleza se
realicen operaciones sobre conjuntos
Monday, June 24, 13
Conjuntos Ordenados
• Conjuntos de datos, pero ordenados por
un score
• Elementos únicos dentro del conjunto, cada
uno con un score asignado
key
blue – 520
green – 890
red – 303
black – 680
Monday, June 24, 13
Conjuntos Ordenados
• Operaciones de conjuntos aplicables
• Operaciones de acceso por score y por rango en
tiempo constante y predecible
http://redis.io/commands#sorted_set
Monday, June 24, 13
Casos de uso
Conjuntos Ordenados
• Leaderboards
• Rankings
• Tracking basado en tiempo
Monday, June 24, 13
Hashes
• Múltiples campo => valor en una misma clave
• Hasta un máximo de 2^32 -1 pares campo => valor
key field1 value1
field2 value2
field3 value3
http://redis.io/commands#hash
Monday, June 24, 13
Hashes
• Puede verse como un arreglo asociativo en PHP:
clave => [
campo1 => valor1,
campo2 => valor2,
campo3 => valor3
]
• Operaciones sobre campos individuales
Monday, June 24, 13
Casos de uso Hashes
• Almacenamiento de objetos compuestos
por varios campos
• Mappings
Monday, June 24, 13
Resumiendo...
• Tenemos la oportunidad de usar la estructura
de datos adecuada para cada tipo de problema
• Tendremos tiempos de ejecución constantes y
predecibles, sin importar el tamaño de los
conjuntos de datos (dataset)
Monday, June 24, 13
CONECTANDO
DESDE
PHP
Monday, June 24, 13
Clientes para PHP
• https://github.com/nrk/predis
• https://github.com/nicolasff/phpredis
Clientes disponibles para la mayoría de los lenguajes de
programación (http://redis.io/clients)
Monday, June 24, 13
Predis
"require": {
"predis/predis": "~0.8.3"
},
• Escrito en PHP
• Maduro y activamente mantenido
• Extensible
• Feature-complete (pipelines, client side sharding,
server profiles, master/slave config, etc.)
Monday, June 24, 13
phpredis
• Escrito en C como una extensión PHP
• Listo para producción
• Extremadamente rápido
• No backward compatible con anteriores
versions de Redis
Monday, June 24, 13
¿Cuál usar?
• Depende...
• Predis cubre la mayoría de las necesidades,
fácil de instalar con composer, y nos ofrece
un rendimiento aceptable
• phpredis si necesitas un rendimiento
excepcional
Monday, June 24, 13
La latencia de red sigue
siendo el principal
“performance killer”,
no el cliente
Monday, June 24, 13
INTEGRANDOREDIS
EN
SYMFONY2
Monday, June 24, 13
Monday, June 24, 13
SncRedisBundle
{
"require": {
"snc/redis-bundle": "1.1.*"
}
}
https://github.com/snc/SncRedisBundle
Monday, June 24, 13
SncRedisBundle
• Integra Predis y phpredis en Symfony2
• Soporte para:
• Session storage
• Monolog logging handler
• SwiftMailer Spooling
• Doctrine caching
Monday, June 24, 13
Definiendo clientes
snc_redis:
clients:
default:
type: predis
alias: default
dsn: redis://redis.example.com
session:
type: predis
alias: session
dsn:
- redis://rses1.example.com
- redis://rses2.example.com
config.yml / redis.yml
Monday, June 24, 13
Configuración avanzada
snc_redis:
clients:
cache:
type: predis
alias: cache
dsn:
- redis://cache1.example.com
- redis://cache2.example.com
options:
profile: 2.6
connection_timeout: 10
readwrite_timeout: 30
config.yml / redis.yml
Monday, June 24, 13
Obteniendo el cliente a
través del container
$redis = $container->get('snc_redis.default');
$key = 'downloads:' . $pid . ':count'
$downloads = $redis->incr($key);
php app/console container:debug | grep snc_redis
Monday, June 24, 13
Clientes registrados
como servicios
php app/console container:debug
snc_redis.default
Information for service snc_redis.default
Service Id snc_redis.default
Class PredisClient
Tags -
Scope container
Public yes
Synthetic no
Required File -
Monday, June 24, 13
Inyectando Redis como
dependencia
namespace AcmeDemoBundleService;
use SncRedisBundleClientPredis as Redis;
class DownloadCounter
{
protected $redis;
public function __construct(Redis $redis)
{
$this->redis = $redis;
}
public function count($itemId)
{
return $this->redis->incr('downloads:' . $itemId . ':count');
}
}
Monday, June 24, 13
Inyectando Redis como
dependencia
<service id="acme.demo.download_counter"
class="AcmeDemoBundleServiceDownloadCounter">
...
<argument type="service" id="snc_redis.default" />
...
</service>
Monday, June 24, 13
Sesiones
Monday, June 24, 13
Sesiones
• Difícil de escalar con la configuración por
defecto
• Por naturaleza no cacheable (read-change-
write back)
• Se necesita mantener estado consistente
Monday, June 24, 13
Estado inconsistente en cada nodo
(no sticky sessions)
Monday, June 24, 13
• Difícil de escalar con
mucho tráfico
• Escrituras en cada
request
• Replication lag
Monday, June 24, 13
• In-memory sessions
• Tiempo de acceso
constante y predecible
• Escala horizontalmente
Monday, June 24, 13
Monday, June 24, 13
Sesiones en Redis
• Sesiones distribuídas (ej. detrás de un
balanceador sin sticky sessions)
• Excepcional rendimiento de escritura/lectura
• Tiempo de acceso constante y predecible
• Escalable horizontalmente (client-side sharding)
Monday, June 24, 13
Session handlers
• A través de un session handler implementado
en PHP, conectando a través de un cliente
Redis
• A través de un session handler implementado
en una extensión de PHP (phpredis)
Monday, June 24, 13
Usando Predis
snc_redis:
clients:
session_cluster:
type: predis
alias: session
dsn:
- redis://sess000.example.net
- redis://sess001.example.net
- redis://sess002.example.net
session:
client: session_cluster
ttl: 1200
prefix: appsession
config.yml
Monday, June 24, 13
Usando phpredis
framework:
session:
# Default storage service
storage_id: "session.storage.native"
# No handler service, use default
handler_id: ~
# The name for the session cookie
name: "appsesid"
config.yml
Monday, June 24, 13
php.ini usando phpredis
session.save_handler = redis
session.save_path = "
tcp://s000.example.net:6379?weight=1,
tcp://s001.example.net:6379?weight=2,
tcp://s002.example.net:6379?weight=2
"
Monday, June 24, 13
redis 127.0.0.1:6379> MONITOR
OK
"GET" "appsession:9jmmp11dvh3b4f1bp9trfuqlj3"
"SETEX" "appsession:9jmmp11dvh3b4f1bp9trfuqlj3"
"1440" "_sf2_attributes|a:1:{s:5:"visit";i:1371678033;}
_sf2_flashes|a:0:{}_sf2_meta|a:3:{s:1:"u";i:
1371678033;s:1:"c";i:1371678023;s:1:"l";s:1:"0";}"
session
name
session id
(cookie)
ttl
(expire
time)
session
data
Monday, June 24, 13
Monolog logging
Monday, June 24, 13
Monolog logging
• Los mensajes de logs son almacenados en
una lista
• Ideal cuando se necesita un broker que
reciba los logs que serán posteriormente
enviados a un agregador (ej. logstash)
Monday, June 24, 13
Monolog config
snc_redis:
clients:
monolog:
type: predis
alias: monolog
dsn: redis://localhost/1
logging: false
monolog:
client: monolog
key: monolog
monolog:
handlers:
main:
type: service
id: monolog.handler.redis
level: debug
Monday, June 24, 13
Referencias
• http://blog.lusis.org/blog/2012/01/31/load-
balancing-logstash-with-redis/
Monday, June 24, 13
SwiftMailer Spooling
Monday, June 24, 13
SwiftMailer Spooling
• Los mensajes no se envian directamente, sino que
se mantienen en un “spool” y son enviados por un
proceso en background
• Usando redis como “spool”, los mensajes son
mantenidos en una lista hasta que son enviados
Monday, June 24, 13
Mailer spooling
snc_redis:
clients:
emails:
type: predis
alias: emails
dsn: redis://emails-spool-00.example.com
logging: false
swiftmailer:
client: emails
key: swiftmailer
config.yml
Monday, June 24, 13
Otros casos de uso en
Symfony2
Monday, June 24, 13
Router dinámicos
• Necesitamos convertir URLs amigables a rutas
internas de Symfony2:
Idioma Ruta interna Ruta “amigable”
es /sport/123 /futbol
en /sport/123 /football
Monday, June 24, 13
Router dinámicos
Idioma
Ruta
“amigable”
_controller
es /futbol
Bundle:SportController:sportPageAction,
array(‘sport’ => 123)
es /madrid
Bundle:CityController:cityPageAction
array(‘city’ => 456)
Monday, June 24, 13
Desventajas
• Difícil de cambiar la configuración de routing
una vez creadas
• Es requerido tener copia de la base de datos
de routings en los ambientes de desarrollo
para que la aplicación funcione
Monday, June 24, 13
Solución alternativa
• Crear un mapping entre rutas amigables y
rutas internas
• Subscribirse a KernelEvents::REQUEST y
antes que nada, cambiar pathInfo en el objeto
Request
Monday, June 24, 13
Flujo
Request
/futbol
Request
/sport/123
RouterMapperListener
Controller/Action
Routing System
Monday, June 24, 13
Monday, June 24, 13
Usando Redis hashes
/futbol /sport/123
/baloncesto /sport/456
/tenis /sport/789
routes:es
/sport/123 /futbol
/sport/456 /baloncesto
/sport/789 /tenis
alias:es
Monday, June 24, 13
Integración con el profiler
y web debug toolbar
Monday, June 24, 13
Integración en el profiler
Monday, June 24, 13
OTROSCASOSDEUSO
GENERALES
Monday, June 24, 13
Presencia de usuarios
(who is online?)
Monday, June 24, 13
¿Quién está online?
• Mantenemos un conjunto con los usuarios
que han estado online por cada minuto
• En cada request, agregamos al usuario al
conjunto de usuarios online del minuto
actual
• Obtenemos los usuarios que han estado
online de la unión de los 5 últimos
conjuntos
Monday, June 24, 13
Monday, June 24, 13
Amigos online
• Mantenemos un conjunto con los amigos
de cada usuario
• Obtenemos los amigos que están online, de
la intersección del conjunto de usuarios
online con el conjunto de amigos de un
usuario
Monday, June 24, 13
Usuarios online
Amigos
Amigos
Online
Monday, June 24, 13
class OnlineUsersManager
{
protected $redis;
public function __construct(Redis $redis)
{
$this->redis = $redis;
}
public function trackUser($userId)
{
$timestamp = time();
$minute = date('i', $timestamp);
$key = 'online_users:' . $minute;
// Add the user to the set of online users in the
current minute.
$this->redis->sadd($key, $userId);
// Expire in 10 minutes.
$this->redis->expire(60 * 10);
}Monday, June 24, 13
Leaderboards
• Caso de uso típico el cual es fácil de implementar
con Redis y díficil de implementar de forma
eficiente en otro sistema
• Los conjuntos ordenados son las estructuras de
datos perfectas para su implementación
Monday, June 24, 13
Monday, June 24, 13
class RankingManager
{
protected $redis;
public function __construct(Redis $redis)
{
$this->redis = $redis;
}
public function onCombatFinished(Combat $combat)
{
$winner = $combat->getAttacker();
$score = $combat->getScoreResult();
$this->redis->zincr('ranking', $score, $winner->getId());
}
public function getTopScores($limit)
{
return $this->redis->zrevrange('ranking', 0, $limit);
}
}
Monday, June 24, 13
Extra Tips
• Redis es single-threaded, todos los
comandos son atómicos
• Transacciones pueden usarse para ejecutar
múltiples comandos de forma atómica
• Lua scripts se ejecutan de forma atómica
también
•
Monday, June 24, 13
Performance Tips
• Usando client-side sharding puede escalarse
horizontalmente ganando en capacidad y
rendimiento
• Ejecutar múltiples comandos a través de
pipelines
Monday, June 24, 13
CONCLUSIONES
Monday, June 24, 13
NO usar Redis
• Cuando el conjunto de datos (dataset) no
cabe en memoria
• Datos de naturaleza relacional
• Cuando no se conoce de antemano como
van a consultarse los datos
Monday, June 24, 13
Cuándo usar Redis
• Redis para datos temporales, altamente dinámicos
y estructuras de datos complejas
• Datos de naturaleza no-relacional
• Ideal para aplicaciones que son write-heavy
• Datos que naturalmente se ajustan a una
estructura de Redis
Monday, June 24, 13
Inegrando Redis en un
stack PHP/Symfony2
• No necesariamente como la DB principal
• Resolviendo problemas que son difíciles de
resolver en un sistema relacional
• Beneficiandonos de las características de Redis de
forma incremental
• Usando la herramienta adecuada para cada tarea
Monday, June 24, 13
Monday, June 24, 13
Referencias
http://redis.io/commands
http://redis.io/documentation
Monday, June 24, 13
Muchas Gracias
https://joind.in/8844
@ronnylt
https://github.com/ronnylt
Monday, June 24, 13
We are hiring!
Monday, June 24, 13

Más contenido relacionado

La actualidad más candente

VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
Luiz Henrique Zambom Santana
 
Summary introduction to data engineering
Summary introduction to data engineeringSummary introduction to data engineering
Summary introduction to data engineering
Novita Sari
 
2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific Dashboard2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific Dashboard
Ceph Community
 
How to boost your datamanagement with Dremio ?
How to boost your datamanagement with Dremio ?How to boost your datamanagement with Dremio ?
How to boost your datamanagement with Dremio ?
Vincent Terrasi
 
Aaron Mildenstein - Using Logstash with Zabbix
Aaron Mildenstein - Using Logstash with ZabbixAaron Mildenstein - Using Logstash with Zabbix
Aaron Mildenstein - Using Logstash with Zabbix
Zabbix
 
Workshop Español - Introducción a Neo4j
Workshop Español - Introducción a Neo4jWorkshop Español - Introducción a Neo4j
Workshop Español - Introducción a Neo4j
Neo4j
 
PostgreSQL Database Slides
PostgreSQL Database SlidesPostgreSQL Database Slides
PostgreSQL Database Slides
metsarin
 
Active Directory.pptx
Active Directory.pptxActive Directory.pptx
Active Directory.pptx
JosephMorales66
 
MongoDB Fundamentals
MongoDB FundamentalsMongoDB Fundamentals
MongoDB Fundamentals
MongoDB
 
PostgreSQL
PostgreSQLPostgreSQL
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
Jongyoon Choi
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
Jim Mlodgenski
 
Building Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkBuilding Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache Spark
Databricks
 
Breaking the cyber kill chain!
Breaking the cyber kill chain!Breaking the cyber kill chain!
Breaking the cyber kill chain!
Nahidul Kibria
 
Role-Based Access Control (RBAC) in Neo4j
Role-Based Access Control (RBAC) in Neo4jRole-Based Access Control (RBAC) in Neo4j
Role-Based Access Control (RBAC) in Neo4j
Neo4j
 
Road to NODES - Handling Neo4j Data with Apache Hop
Road to NODES - Handling Neo4j Data with Apache HopRoad to NODES - Handling Neo4j Data with Apache Hop
Road to NODES - Handling Neo4j Data with Apache Hop
Neo4j
 
Neo4j Graph Platform Overview, Kurt Freytag, Neo4j
Neo4j Graph Platform Overview, Kurt Freytag, Neo4jNeo4j Graph Platform Overview, Kurt Freytag, Neo4j
Neo4j Graph Platform Overview, Kurt Freytag, Neo4j
Neo4j
 
Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)
Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)
Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)
Johann Lombardi
 
The Real Cost of Slow Time vs Downtime
The Real Cost of Slow Time vs DowntimeThe Real Cost of Slow Time vs Downtime
The Real Cost of Slow Time vs Downtime
Radware
 

La actualidad más candente (20)

VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
 
Summary introduction to data engineering
Summary introduction to data engineeringSummary introduction to data engineering
Summary introduction to data engineering
 
2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific Dashboard2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific Dashboard
 
How to boost your datamanagement with Dremio ?
How to boost your datamanagement with Dremio ?How to boost your datamanagement with Dremio ?
How to boost your datamanagement with Dremio ?
 
Aaron Mildenstein - Using Logstash with Zabbix
Aaron Mildenstein - Using Logstash with ZabbixAaron Mildenstein - Using Logstash with Zabbix
Aaron Mildenstein - Using Logstash with Zabbix
 
Workshop Español - Introducción a Neo4j
Workshop Español - Introducción a Neo4jWorkshop Español - Introducción a Neo4j
Workshop Español - Introducción a Neo4j
 
PostgreSQL Database Slides
PostgreSQL Database SlidesPostgreSQL Database Slides
PostgreSQL Database Slides
 
Active Directory.pptx
Active Directory.pptxActive Directory.pptx
Active Directory.pptx
 
MongoDB Fundamentals
MongoDB FundamentalsMongoDB Fundamentals
MongoDB Fundamentals
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
 
Building Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkBuilding Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache Spark
 
Breaking the cyber kill chain!
Breaking the cyber kill chain!Breaking the cyber kill chain!
Breaking the cyber kill chain!
 
Role-Based Access Control (RBAC) in Neo4j
Role-Based Access Control (RBAC) in Neo4jRole-Based Access Control (RBAC) in Neo4j
Role-Based Access Control (RBAC) in Neo4j
 
Road to NODES - Handling Neo4j Data with Apache Hop
Road to NODES - Handling Neo4j Data with Apache HopRoad to NODES - Handling Neo4j Data with Apache Hop
Road to NODES - Handling Neo4j Data with Apache Hop
 
Neo4j Graph Platform Overview, Kurt Freytag, Neo4j
Neo4j Graph Platform Overview, Kurt Freytag, Neo4jNeo4j Graph Platform Overview, Kurt Freytag, Neo4j
Neo4j Graph Platform Overview, Kurt Freytag, Neo4j
 
Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)
Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)
Introduction to the DAOS Scale-out object store (HLRS Workshop, April 2017)
 
Infinispan for Dummies
Infinispan for DummiesInfinispan for Dummies
Infinispan for Dummies
 
The Real Cost of Slow Time vs Downtime
The Real Cost of Slow Time vs DowntimeThe Real Cost of Slow Time vs Downtime
The Real Cost of Slow Time vs Downtime
 

Destacado

Fluentd and PHP
Fluentd and PHPFluentd and PHP
Fluentd and PHPchobi e
 
From Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & ElasticsearchFrom Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & Elasticsearch
Sematext Group, Inc.
 
Application Logging With The ELK Stack
Application Logging With The ELK StackApplication Logging With The ELK Stack
Application Logging With The ELK Stack
benwaine
 
Fluentd and docker monitoring
Fluentd and docker monitoringFluentd and docker monitoring
Fluentd and docker monitoring
Vinay Krishna
 
Fluentd vs. Logstash for OpenStack Log Management
Fluentd vs. Logstash for OpenStack Log ManagementFluentd vs. Logstash for OpenStack Log Management
Fluentd vs. Logstash for OpenStack Log Management
NTT Communications Technology Development
 
Application Logging With Logstash
Application Logging With LogstashApplication Logging With Logstash
Application Logging With Logstash
benwaine
 
Logging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaLogging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaAmazee Labs
 

Destacado (7)

Fluentd and PHP
Fluentd and PHPFluentd and PHP
Fluentd and PHP
 
From Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & ElasticsearchFrom Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & Elasticsearch
 
Application Logging With The ELK Stack
Application Logging With The ELK StackApplication Logging With The ELK Stack
Application Logging With The ELK Stack
 
Fluentd and docker monitoring
Fluentd and docker monitoringFluentd and docker monitoring
Fluentd and docker monitoring
 
Fluentd vs. Logstash for OpenStack Log Management
Fluentd vs. Logstash for OpenStack Log ManagementFluentd vs. Logstash for OpenStack Log Management
Fluentd vs. Logstash for OpenStack Log Management
 
Application Logging With Logstash
Application Logging With LogstashApplication Logging With Logstash
Application Logging With Logstash
 
Logging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaLogging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & Kibana
 

Similar a Integrando Redis en aplicaciones Symfony2

Taller Redis
Taller RedisTaller Redis
Taller Redisbetabeers
 
Clase 2 - Arquitectura de Postgres
Clase 2 - Arquitectura de PostgresClase 2 - Arquitectura de Postgres
Clase 2 - Arquitectura de Postgres
Eddie Malca
 
introduccion bases de datos
introduccion bases de datosintroduccion bases de datos
introduccion bases de datos
rubenbaltazarbalderr
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
Claudio Montoya
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
Pablo Godel
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
SolidQ
 
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdfUnidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
DanielMarquez902683
 
Buenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL ServerBuenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL Server
SolidQ
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHPAlicantePHP
 
Tema LOS SGBD O DBMS.pptx
Tema LOS SGBD O DBMS.pptxTema LOS SGBD O DBMS.pptx
Tema LOS SGBD O DBMS.pptx
Johnny Rodriguez
 
Base de datos
Base de datosBase de datos
Base de datos
Az
 
Alto rendimiento en la web
Alto rendimiento en la webAlto rendimiento en la web
Alto rendimiento en la web
Nil Portugués Calderó
 
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQLDesarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Roanny Lamas
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Socialmetrix
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
Antonio Ognio
 
Base de datos sql
Base de datos sqlBase de datos sql
Base de datos sql
Andy Sanhueza
 
Integración de Oracle Data Integrator con Oracle GoldenGate 12c
Integración de Oracle Data Integrator  con Oracle GoldenGate 12cIntegración de Oracle Data Integrator  con Oracle GoldenGate 12c
Integración de Oracle Data Integrator con Oracle GoldenGate 12c
Edelweiss Kammermann
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
Juan Ladetto
 

Similar a Integrando Redis en aplicaciones Symfony2 (20)

Taller Redis
Taller RedisTaller Redis
Taller Redis
 
Clase 2 - Arquitectura de Postgres
Clase 2 - Arquitectura de PostgresClase 2 - Arquitectura de Postgres
Clase 2 - Arquitectura de Postgres
 
introduccion bases de datos
introduccion bases de datosintroduccion bases de datos
introduccion bases de datos
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
 
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdfUnidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
 
Buenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL ServerBuenas prácticas que debes seguir en la administración de tu SQL Server
Buenas prácticas que debes seguir en la administración de tu SQL Server
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
Tema LOS SGBD O DBMS.pptx
Tema LOS SGBD O DBMS.pptxTema LOS SGBD O DBMS.pptx
Tema LOS SGBD O DBMS.pptx
 
Base de datos
Base de datosBase de datos
Base de datos
 
Alto rendimiento en la web
Alto rendimiento en la webAlto rendimiento en la web
Alto rendimiento en la web
 
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQLDesarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
 
Doctrine
DoctrineDoctrine
Doctrine
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
 
Base de datos sql
Base de datos sqlBase de datos sql
Base de datos sql
 
Integración de Oracle Data Integrator con Oracle GoldenGate 12c
Integración de Oracle Data Integrator  con Oracle GoldenGate 12cIntegración de Oracle Data Integrator  con Oracle GoldenGate 12c
Integración de Oracle Data Integrator con Oracle GoldenGate 12c
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 

Último

Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
aljitagallego
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 

Último (20)

Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 

Integrando Redis en aplicaciones Symfony2