Publicado el 18 de Agosto del 2017
1.838 visualizaciones desde el 18 de Agosto del 2017
223,0 KB
33 paginas
Creado hace 11a (05/07/2013)
Sobre este libro
Licencia
El Pequeño Libro de Redis (The Little Redis Book) posee una licencia Attribution-NonCommercial 3.0 Unported. No
deberías haber pagado por este libro.
Eres libre de copiar, distribuir, modificar o mostrar el libro. Sin embargo, te pido que siempre me atribuyas la autoría
del libro a mí, Karl Seguin, y al traductor, Raúl Expósito, y que no lo utilices con fines comerciales.
Puedes leer el texto completo de la licencia en:
http://creativecommons.org/licenses/by-nc/3.0/legalcode
Sobre El Autor
Karl Seguin es un desarrollador con experiencia en varias áreas y tecnologias. Es un contribuidor activo en proyectos
Open Source, un escritor técnico y un orador ocasional. Ha escrito varios artículos, al igual que varias herramientas,
sobre Redis. Redis posibilita tanto el ranking como las estadísticas de su servicio para desarrolladores ocasionales de
videojuegos: mogade.com.
Karl escribió El Pequeño Libro de MongoDB, el popular y gratuito libro sobre MongoDB.
Puede encontrase su blog en http://openmymind.net y twittea vía @karlseguin
Sobre El Traductor
Este libro ha sido traducido por Raúl Expósito. Puedes visitar su página web en http://raulexposito.com/
Agradecimientos
Quiero agradecerle especialmente a Perry Neal el haberme prestado su visión, su mentalidad y su pasión. Me brindaste
una ayuda que no tiene precio. Gracias.
Última versión
La última versión del código fuente de este libro puede encontrarse en: http://github.com/raulexposito/the-little-redis-book
1
Introducción
En el último par de años, las técnicas y herramientas utilizadas para el almacenamiento y consulta de datos han crecido
a un ritmo increíble. Es seguro afirmar que las bases de datos relacionales ya no van a ir a ninguna parte, del mismo
modo que es posible decir que el ecosistema generado en torno a los datos nunca volverá a ser el mismo.
De todas las nuevas herramientas y soluciones, para mí, Redis ha sido la más emocionante. ¿Por qué?. El primer lugar
porque es increíblemente fácil de aprender. La unidad correcta a emplear es horas cuando se habla de la cantidad de
tiempo que se necesita hasta sentirse cómodo con Redis. En segundo lugar, porque soluciona un conjunto específico
de problemas a la vez que se mantiene bastante genérico. ¿Qué significa esto exactamente? Redis no intenta hacer
de todo con todo tipo de datos. A medida que vayas aprendiendo Redis, verás de un modo cada vez más evidente qué
funciona y qué no funciona con él. Y lo que funciona, como desarrollador, genera una grata experiencia.
Mientras que es posible construir un sistema completo utilizando únicamente Redis, creo que mucha gente lo considerará
como un complemento a aquello que esté utilizando para almacenar datos de forma genérica - que puede ser una base
de datos relacional tradicional, un sistema orientado a documentos, o cualquier otra cosa. Es el tipo de solución que se
emplea para implementar características específicas. De este modo, es similar a un motor de indexado. No tratarías
de construir tu aplicación completa con Lucene, pero cuando necesitas realizar buenas búsquedas, da una experiencia
mucho más satisfactoria - tanto para tí como para tus usuarios. Por supuesto, las similitudes entre Redis y los motores
de indexado terminan aquí.
El objetivo de este libro es permitirte asentar las bases que necesitarás para ser un maestro de Redis. Nos centraremos
en cinco estructuras de datos de Redis y veremos varias aproximaciones a modelos de datos. También veremos algunos
asuntos administrativos y técnicas de depuración.
2
Comienzo
Todos tenemos un modo distinto de aprender: unos prefieren ensuciarse las manos, otros ver vídeos y a otros les gusta
leer. Nada te ayudará mejor a entender Redis que experimentar con él. Redis es realmente sencillo de instalar y viene
con una shell sencilla que nos dará todo lo que necesitemos. Vamos a emplear un par de minutos en tenerlo instalado
y funcionando en nuestro equipo.
En Windows
Redis no da soporte oficial en Windows, pero existen opciones disponibles. Probablemente no quieras ejecutarlo en un
entorno de producción, pero no he sufrido ninguna limitación mientras lo utilizaba para desarrollar.
Puedes obtener una versión de Microsoft Open Technologies, Inc. en https://github.com/MSOpenTech/redis. En el
momento de escribir estas líneas esta opción no está preparada para un uso real en sistemas de producción.
Otra solución, que ha estado disponible durante algún tiempo, puede obtenerse en https://github.com/dmajkic/redis/
downloads. Puedes descargar la versión más acutalizada (que debería estar en la parte superior de la lista). Descom-
prime el zip y, dependiendo de tu arquitectura, abre el directorio de 64bit o 32bit.
En *nix y MacOSX
Para los usuario de *nix y Mac, la construcción desde el código fuente es la mejor opción. Las instrucciones, junto con
la última versión, están disponibles en http://redis.io/download. En el momento de escribir esto la última versión es
la 2.6.2; para instalar esta versión debemos ejecutar:
redis - 2 . 6 . 2 . t a r . gz
wget h t t p : / / r e d i s . googlecode . com / f i l e s / redis - 2 . 6 . 2 . t a r . gz
t a r xzf
cd redis - 2 . 6 . 2
make
(De forma alternativa, Redis está disponible a través de varios gestores de paquetes. Por ejemplo, los usuarios de
MacOSX que tengan Homebrew instalado pueden simplemente ejecutar el comando brew install
redis.)
Si lo construyes desde el código fuente, los ejecutables binarios se encontrarán en el directorio src. Navega hacia el
directorio src ejecutando cd src.
Ejecutando y Conectando con Redis
Si todo ha funcionado los binarios de Redis deberían estar a tu alcance. Redis tiene un puñado de ejecutables. Nos
vamos a centrar en el servidor Redis y en la interfaz por línea de comandos de Redis (un cliente similar a MSDOS).
Vamos a comenzar por el servidor. En Windows hay que hacer doble click en redis-server. En *nix/MacOSX ejecuta
./ redis-server.
3
Si lees el mensaje de arranque verás una advertencia que indica que el fichero redis.conf no existe. Redis en su lugar
empleará valores prefedinidos, lo cual irá bien para lo que vamos a hacer.
El siguiente paso es ejecutar la consola de Redis, haciendo doble click sobre redis- cli (Windows) o ejecutando ./ redis- cli
(*nix/MacOSX). Conectará con el servidor que se ejecuta en la misma máquina en el puerto por defecto (6379).
Puedes probar que todo funciona correctamente escribiendo info en la interfaz por línea de comandos. Veremos un
montón de pares clave-valor que indicarán cuál es el estado del servidor.
Si tienes problemas con la configuración indicada anteriormente te sugiero que busques ayuda en el grupo oficial de
soporte de Redis.
4
Controladores para Redis
Como pronto aprenderás, la mejor manera de describir el API de Redis es como un conjunto explícito de funciones.
Esto significa que cuando estás utilizando la línea de comandos, o un controlador para tu lenguaje favorito, las cosas
se hacen de una manera muy similar. Por lo tanto, no deberías tener problemas si prefieres trabajar con Redis desde
un lenguaje de programación. Si quieres, echa un vistazo a la página de clientes y descarga el controlador adecuado.
5
Capítulo 1 - Los Fundamentos
¿Qué hace a Redis especial?, ¿Qué tipos de problemas soluciona?, ¿Qué deberían esperar los desarrolladores cuando
lo utilizan?. Antes de poder responder a estas preguntas, necesitamos entender qué es Redis.
Redis suele ser descrito como un almacén en memoria de conjuntos clave-valor. Yo no creo que ésta sea una descrip-
ción adecuada. Redis mantiene todos los datos en memoria (más sobre esto en breve), y los escribe en disco para
persistirlos, pero es mucho más que un simple almacén de conjuntos clave-valor. Es importante ir un paso más allá
de este concepto erróneo, porque sino tu perspectiva sobre Redis y los problemas que soluciona estarán demasiado
acotados.
La realidad es que Redis ofrece cinco estructuras diferentes de datos, una de las cuales es la típica estructura clave-
valor. Entender estas cinco estructuras de datos, cómo trabajan, qué métodos exponen y qué puedes modelar con ellos
es la clave para entender Redis. Sin embargo, primero vamos a ver qué son éstas estructuras de datos.
Si estuviéramos aplicando este concepto de estructura de datos en el mundo de las bases de datos relacionales,
podríamos decir que estas bases de datos ofrecen una única estructura de datos - tablas. Las tablas son tan complejas
como flexibles. Sin embargo, esta naturaleza genérica no está libre de inconvenientes. En concreto, no todo es tan
simple, o tan rápido, como debería ser. ¿Qué ocurriría si, en vez de tener una estructura que trate de encajar con todo,
utilizamos estructuras más especializadas?. Puede que siga habiendo cosas que no podamos hacer (o, al menos, no
podamos hacer bien) pero, seguramente ¿no podremos haber ganado en simplicidad y velocidad?
¿Usar estructuras de datos específicas para resolver problemas específicos?, ¿no es así como programamos?. No
utilizas una tabla hash para cada dato, al igual que tampoco usas una variable escalar. Para mí, esto es lo que define
la aproximación de Redis. Si estás trabajando con escalares, listas, tablas hash o conjuntos, ¿por qué no almacenarlos
en escalares, listas, tablas hash o conjuntos?, ¿por qué comprobar la existencia de un elemento tiene que ser más
complicado que invocar exists(key) o más lento que O(1)? (búsqueda que no se ralentiza sin importar el número de
elementos que haya).
6
Los Ladrillos
Bases de datos
Redis tiene el mismo concepto de base de datos que aquel con el que estés familiarizado. Una base de datos contiene
un conjunto de datos. El caso de uso típico de una base de datos es conservar todos los datos de una aplicación juntos
y mantenerlos separados de los de otras aplicaciones.
En Redis, las bases de datos están identificadas simplemente con un número, si
Comentarios de: El Pequeño Libro de Redis (The Little Redis Book) (0)
No hay comentarios