Successfully reported this slideshow.

Redis: servidor de estructuras de datos

6

Share

Loading in …3
×
1 of 19
1 of 19

Redis: servidor de estructuras de datos

6

Share

Download to read offline

Una introducción a Redis, un servidor de estructuras de datos en red que actua como una base de datos no-relacional con almacenamiento principal en memoria RAM y estrategias de almacenamiento persistente basadas en disco.

Una introducción a Redis, un servidor de estructuras de datos en red que actua como una base de datos no-relacional con almacenamiento principal en memoria RAM y estrategias de almacenamiento persistente basadas en disco.

More Related Content

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Redis: servidor de estructuras de datos

  1. 1. Servidor de estructuras de datos básicas (NoSQL) Antonio Ognio @gnrfan Saturday, March 24, 12
  2. 2. • ReDIS = Remote Dictionary Server • Diccionario ~= Array de PHP, Objeto Javascript, etc • Servidor de sockets TCP/IP (Puerto 6379 - Prot. texto plano) • Escrito en C (23+ Kloc) • Fácil compilación e instalación (pocas dependencias) • Programado para entornos UNIX (Linux, BSD, Mac OS X) • Empaquetado para mayoría de distribuciones Saturday, March 24, 12
  3. 3. • Creado en Sicilia (Italia) por Salvatore Sanfilippo • Iniciado a principios del 2009 • Licencia BSD (Código abierto) • Desarrollado inicialmente para LLOOGG • Co-desarrollado por Pieter Noordhuis (Holanda) • Sponsoring de VMware Saturday, March 24, 12
  4. 4. Tipos de datos • Cadenas de texto • Listas • Conjuntos • Conjuntos ordenados • Hashes (Diccionarios) • Canales (Pub/Sub) Saturday, March 24, 12
  5. 5. API http://redis.io/commands Saturday, March 24, 12
  6. 6. API $ redis-cli zadd hackers 1940 "Alan Kay" (integer) 1 $ redis-cli zadd hackers 1953 "Richard Stallman" (integer) 1 $ redis-cli zadd hackers 1965 "Yukihiro Matsumoto" (integer) 1 $ redis-cli zadd hackers 1916 "Claude Shannon" (integer) 1 $ redis-cli zadd hackers 1969 "Linus Torvalds" (integer) 1 $ redis-cli zadd hackers 1912 "Alan Turing" (integer) 1 Saturday, March 24, 12
  7. 7. API $ redis-cli zrange hackers 0 -1 1. Alan Turing 2. Claude Shannon 3. Alan Kay 4. Richard Stallman 5. Yukihiro Matsumoto 6. Linus Torvalds $ redis-cli zrevrange hackers 0 -1 1. Linus Torvalds 2. Yukihiro Matsumoto 3. Richard Stallman 4. Alan Kay 5. Claude Shannon 6. Alan Turing Saturday, March 24, 12
  8. 8. Persistencia • El conjunto de datos debe entrar en la RAM • Snapshots en disco cada cierto tiempo • Ventana de tiempo configurable • Compacto (en uso de disco) • Append-only file (AOF) • Registra cada cambio en tiempo real • Usa más espacio de disco pero puede ser compactado Saturday, March 24, 12
  9. 9. Librerías cliente • Existentes para virtualmente cualquier lenguaje popular de la actualidad • En muchos casos más de una librería disponible • Algunas de ellas: http://redis.io/clients • redis-py (Python) • hiredis (C) • redis-rb (Ruby) • ObjCHiredis (Objective-C) • Jedis (Java) • redis_node (Node.js) Saturday, March 24, 12
  10. 10. Clustering • Por el momento soporta replicación master-slave • Librerías cliente implementan sharding • Algoritmo de consistent hashing • Redis Cluster • Rama de Redis en desarrollo activo • Se basa en el concepto de “slots” o “virtual buckets” Saturday, March 24, 12
  11. 11. Comunidad • Early-adopters en las comunidades de Ruby y Python principalmente • Muy popular con las startups • Meetup groups (San Francisco, Londres) • Seguir a @antirez en Twitter y buscar el hashtag #redis • Canal IRC muy activo y amigable: #redis en Freenode.net Saturday, March 24, 12
  12. 12. Comparativa • MySQL (o cualquier otra base SQL) • El almacenamiento principal es en disco, la RAM se usa como caché - Redis toma el camino opuesto • El parsing de SQL es un cuello de botella • Por eso les conviene usar Prepared Statements • El modelo relacional y el lenguaje SQL es mucho más flexible si no se conoce de antemano el uso que se le va a dar a los datos Saturday, March 24, 12
  13. 13. Comparativa • Memcached • Muy popular en sitios web grandes • No soporta persistencia directamente • Existe memcachedb como un proyecto aparte • Solo permite almacenar cadenas o BLOBs • Estrategia de expiración basada en tiempo (TTL) • No soporta clustering directamente • Las librerías deben implementar una estrategia como round robin o consistent hashing. Saturday, March 24, 12
  14. 14. Modelamiento • ¿Cómo modelamos un blog? • ID de post (un contador) • Datos de cada post (un hash) • Tags de cada post (un conjunto) • Listado de posts ordenados por fecha (un sorted set) • Posts por meses, posts por tags, etc (más sorted sets) https://bitbucket.org/nosqldemos/redis-blog-demo Saturday, March 24, 12
  15. 15. Código de ejemplo • Lamer News (un clone de Reddit) • Escrito por Salvatore, el autor de Redis • Código bastante simple usando Sinatra (Ruby) • Demuestra el uso de Redis como base de datos principal • Hay un port en Python en Github http://lamernews.com/ Saturday, March 24, 12
  16. 16. Ideas de uso • Contadores rápidos para sitios web • Colas de trabajos (Ej. Resque de Github) • Lista de últimos usuarios que han visitado un portal • Caché de objetos más visitados (Ej. Noticias de la portada) • Servidor de chat usando canales (pub/sub) http://rediscookbook.com/ Saturday, March 24, 12
  17. 17. Estrategias de despliegue • YouPorn, uno de los sitios con más tráfico de Internet depende de Redis para indexar y servir su contenido • Uso extensivo de Sorted Sets para cada tag o listado de videos independiente • Decenas de servidores Redis en replicación master- • Redis resultó más rápido que las tarjetas de red que tenían, tuvieron que cambiarlas • Aún se guardan los datos en MySQL para regenerar conjuntos http://mundogeek.net/archivos/2012/02/16/el-porno-prefiere-redis/ Saturday, March 24, 12
  18. 18. Ej. Modelamiento YouPorn videos:filters:released videos:filters:orientation:​straight videos:filters:categories:{​category_id} videos:ordering:rating https://groups.google.com/forum/#!topic/redis-db/d4QcWV0p-YM Saturday, March 24, 12
  19. 19. Conclusiones • Servidor de estructuras de datos básicas en red (listas, conjuntos, diccionarios, contadores) • Aplicable virtualmente a cualquier sitio web ya existente como parte de una estrategia de caché o acelaración • Exige un tipo de modelamiento orientado al dominio del problema que ofrece un alto rendimiento a la hora de hacer consultas pero no es flexible como estrategia de almacenamiento a largo plazo Saturday, March 24, 12

×