Aprendiendo REDIS en 20 minutos

7,898 views

Published on

Aprendiendo REDIS en 20 minutos es una guía básica de como iniciarse con redis, desde la instalación, concepto y uso de algunos comandos básicos.

Published in: Education

Aprendiendo REDIS en 20 minutos

  1. 1. REDIS en Acción Aprendiendo REDIS en 20 minutos Gonzalo Chacaltana gchacaltanab
  2. 2. Conociendo REDIS • Servidor de base de datos NoSQL de clave-valor (key-value) en memoria RAM. • Estructura de datos: Strings, list, sets, set order, hashes. • Permite expiración de datos. • Replicación Maestro-Esclavo (master-slave) • Conexión TCP/IP y sockets (puerto por defecto 6379). • Evaluación de código LUA. • Servidor Mono-hilo, no aprovecha los multi-core.
  3. 3. Instalación Antes de instalar redis, hay un par de requisitos previos que hay que descargar para iniciar la instalación. ~$ sudo apt-get update Una vez finalizado, descargamos el metapaquete build-essential, el cual nos ayudará a instalar redis. ~$ sudo apt-get install build-essential Finalmente, necesitamos instalar el tcl. ~$ sudo apt-get install tcl8.5
  4. 4. Instalación Con todos los requisitos descargados, procedemos a instalar redis. Descargamos desde el tarball de Google, la versión 2.4.16 ~$ wget http://redis.googlecode.com/files/redis-2.4.16.tar.gz Descomprimimos y cambiamos de directorio. ~$ tar xzf redis-2.4.16.tar.gz ~$ cd redis-2.4.16 Procedemos a ejecutar make ~$ make
  5. 5. Instalación Ejecuta el make test, como recomienda: ~$ make test Terminamos ejecutando make install para instalar redis en el Sistema. ~$ sudo make install Una vez instalado, redis viene con un scripts que debemos ejecutar para que redis corra en background (segundo plano) ~$ cd utils Desde esta carpeta (utils/) ejecutamos el script ~$ sudo ./install_server.sh Nos va pedir ingresar el puerto con que queremos trabajar, puedes dejar los valores por defecto (puerto 6379).
  6. 6. Instalación Iniciando el servicio de redis ~$ sudo service redis_6379 start Deteniendo el servicio de redis ~$ sudo service redis_6379 stop Accediendo a la base de datos redis. ~$ redis-cli Y te aparecerá el prompt de la consola de redis redis 127.0.0.1:6379> Para hacer que redis se ejecute automáticamente al iniciar el Sistema Operativo. ~$ sudo update-rc.d redis_6379 defaults
  7. 7. Strings en Redis Los Strings pueden almacenar hasta 512 MB y son almacenados en formato binario por lo que pueden almacenar desde texto hasta imágenes JPG. Una manera simple de crear un string, con el comando SET redis 127.0.0.1:6379> set mi_valor “contenido_valor” Los strings pueden almacenar valores extensos y la llave no necesariamente tiene que ser una palabra: redis 127.0.0.1:6379> set user:gchacaltana "job: developer, name: Gonzalo, surnames: Chacaltana”
  8. 8. Strings en Redis Obteniendo el valor de un string, con el comando GET redis 127.0.0.1:6379> get mi_valor redis 127.0.0.1:6379> get user:gchacaltana Para agregar un texto a la variable (llave) puede utilizar el comando APPEND redis 127.0.0.1:6379> set saludo "Hola" redis 127.0.0.1:6379> append saludo " mundo" redis 127.0.0.1:6379> get saludo “Hola mundo”
  9. 9. List en Redis Las listas en Redis pueden almacenar hasta 4 billones de elementos y el acceso al primer y último elemento de la lista es mucho mas rápido que el resto de elementos. Para crear una lista en redis, debemos utilizar uno de los siguientes comandos: • LPUSH que agrega el elemento a la izquierda de la lista. • RPUSH que agrega el elemento a la derecha o cola (tail) de la lista. redis 127.0.0.1:6379> lpush lenguajes "Python” redis 127.0.0.1:6379> rpush lenguajes "PHP” redis 127.0.0.1:6379> rpush lenguajes “Haskell” redis 127.0.0.1:6379> rpush lenguajes “Ruby” redis 127.0.0.1:6379> rpush lenguajes “Clojure” redis 127.0.0.1:6379> rpush lenguajes “Go”
  10. 10. List en Redis Obteniendo valores de la lista, con el comando LRANGE redis 127.0.0.1:6379> lrange lenguajes 0 6 1) "Python" 2) "PHP" 3) "Haskell" 4) "Clojure" 5) "Go" 6) "Ruby"
  11. 11. List en Redis Para eliminar los elementos de una lista, usamos el comando LTRIM. redis 127.0.0.1:6379> ltrim lenguajes 0 2 Lo que hace el comando es eliminar todos los elementos de la lista que no se encuentren entre los indices 0 y 2. redis 127.0.0.1:6379> lrange lenguajes 0 5 1) "Python" 2) "PHP" 3) "Haskell"
  12. 12. Sets en Redis Los sets en Redis (conjuntos),son una colección de cadenas desordenadas. Una propiedad de este tipo de variable es que no permite repetir un elemento, por ejemplo cuando deseamos guardar las IPS que se conectan a nuestra aplicación, con este tipo de variable nos aseguramos que la IP no se repita en los Sets Redis. Para agregar un elemento se usa el comando SADD. redis 127.0.0.1:6379> sadd vocales a También podemos enviarle más de un valor. redis 127.0.0.1:6379> sadd vocales e i o u
  13. 13. Sets en Redis Para mostrar los elementos del set redis, usamos el comando SMEMBERS. redis 127.0.0.1:6379> smembers vocales 1) "o" 2) "i" 3) "e" 4) "a" 5) "u"
  14. 14. Sets en Redis Para obtener los elementos repetidos de DOS SETS Redis, usamos el comando SINTER. redis 127.0.0.1:6379> sadd abecedario a b c d e (integer) 5 redis 127.0.0.1:6379> sinter vocales abecedario 1) "e" 2) "a“ Retorna un sets con los valores repetidos. El comando SINTER, puede recibir mas de 2 sets separados por espacios.
  15. 15. Sets en Redis Para obtener un elemento al azar (random) de un SETS Redis, y a su vez que sea eliminado, usamos el comando SPOP. redis 127.0.0.1:6379> spop abecedario "c" redis 127.0.0.1:6379> smembers abecedario 1) "d" 2) "e" 3) "a" 4) "b"
  16. 16. Hashes en Redis Los hash (hashes) son variables para representar objetos, por lo que almacena un conjunto de valores en forma de columnas. Con el comando HMSET, creamos un registro de datos redis 127.0.0.1:6379> hmset user:1000 username gchacaltana password mi_clave_secreta twitter @gchacaltanab Con el comando HGETALL, obtenemos el valor completo de un registro. redis 127.0.0.1:6379> hgetall user:1000 1) "username" 2) "gchacaltana" 3) "password" 4) "mi_clave_secreta" 5) "twitter" 6) "@gchacaltanab"
  17. 17. Hashes en Redis Con el comando HSET, modificamos un valor de un campo de un registro. redis 127.0.0.1:6379> hset user:1000 password 123456 redis 127.0.0.1:6379> hgetall user:1000 1) "username" 2) "gchacaltana" 3) "password" 4) "123456" 5) "twitter" 6) "@gchacaltanab"
  18. 18. Expiración de datos Redis no solo es utilizado para el almacenamiento de datos, también es muy utilizado para la expiración de datos. Por ejemplo, creamos un string con un “valor secreto” redis 127.0.0.1:6379> set information "secret" Y le asignamos un tiempo de expiración de 45 segundos redis 127.0.0.1:6379> expire information 45 Para poder visualizar cuanto tiempo le queda, usamos el comando ttl. redis 127.0.0.1:6379> ttl information (integer) 27
  19. 19. Incrementales Incrementar en 1 el valor de una llave (solo si su valor es un dato numerico - integer), usando el comando INCR redis 127.0.0.1:6379> set edad 20 redis 127.0.0.1:6379> incr edad (integer) 21 redis 127.0.0.1:6379> get edad "21" Incrementando en “X” un valor, con el comando INCRBY redis 127.0.0.1:6379> incrby edad 8 (integer) 29
  20. 20. Decrementales Restar en 1 el valor de una llave (solo si su valor es un dato numerico - integer), usando el comando DECR redis 127.0.0.1:6379> decr edad (integer) 28 Restando en “X” un valor, con el comando DECRBY redis 127.0.0.1:6379> decrby edad 8 (integer) 20
  21. 21. Otros comandos Obteniendo la longitud de un string, con el comando STRLEN. redis 127.0.0.1:6379> set saludo "Hola mundo" OK redis 127.0.0.1:6379> strlen saludo (integer) 10 Obteniendo parte de un string, con el comando GETRANGE redis 127.0.0.1:6379> getrange saludo 0 5 "Hola m"
  22. 22. Documentación Documentación oficial de redis: http://redis.io/documentation Tiago Macedo, Fred Oliveira Link Gonzalo Chacaltana gchacaltanab

×