SlideShare une entreprise Scribd logo
1  sur  25
REDIS en Acción
Aprendiendo REDIS en 20 minutos

Gonzalo Chacaltana

gchacaltanab
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.
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
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
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).
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
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”
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”
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”
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"
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"
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
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"
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.
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"
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"
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"
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
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
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
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"
Documentación
Documentación oficial de redis: http://redis.io/documentation
Tiago Macedo, Fred Oliveira
Link

Gonzalo Chacaltana

gchacaltanab

Contenu connexe

Tendances

Asynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFutureAsynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFutureJosé Paumard
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoOpsta
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingPiotr Perzyna
 
Taller Redis
Taller RedisTaller Redis
Taller Redisbetabeers
 
Redis Overview
Redis OverviewRedis Overview
Redis OverviewHoang Long
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operatorsJ On The Beach
 
A brief introduction to SQLite PPT
A brief introduction to SQLite PPTA brief introduction to SQLite PPT
A brief introduction to SQLite PPTJavaTpoint
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?Mydbops
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Amazon Web Services
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redisTanu Siwag
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 introTerry Cho
 
Learning solid principles using c#
Learning solid principles using c#Learning solid principles using c#
Learning solid principles using c#Aditya Kumar Rajan
 
Kubernetes #4 volume & stateful set
Kubernetes #4   volume & stateful setKubernetes #4   volume & stateful set
Kubernetes #4 volume & stateful setTerry Cho
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVCIndicThreads
 

Tendances (20)

Asynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFutureAsynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFuture
 
Kubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with DemoKubernetes Secrets Management on Production with Demo
Kubernetes Secrets Management on Production with Demo
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals Training
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 
Redis Overview
Redis OverviewRedis Overview
Redis Overview
 
An intro to Kubernetes operators
An intro to Kubernetes operatorsAn intro to Kubernetes operators
An intro to Kubernetes operators
 
Explain that explain
Explain that explainExplain that explain
Explain that explain
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
A brief introduction to SQLite PPT
A brief introduction to SQLite PPTA brief introduction to SQLite PPT
A brief introduction to SQLite PPT
 
Scala Intro
Scala IntroScala Intro
Scala Intro
 
Redis and it's data types
Redis and it's data typesRedis and it's data types
Redis and it's data types
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redis
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
Learning solid principles using c#
Learning solid principles using c#Learning solid principles using c#
Learning solid principles using c#
 
Kubernetes #4 volume & stateful set
Kubernetes #4   volume & stateful setKubernetes #4   volume & stateful set
Kubernetes #4 volume & stateful set
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
 

Similaire à Aprendiendo REDIS en 20 minutos

Integración LDAP + SAMBA
Integración LDAP + SAMBAIntegración LDAP + SAMBA
Integración LDAP + SAMBAcyberleon95
 
Curso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpCurso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpEdgar Solis
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuDavid Vevelas
 
Scapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de redScapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de redDavid Cristóbal
 
Postfix y Dovecot con usuarios virtuales mysql en Debian Wheezy
Postfix y Dovecot con usuarios virtuales mysql en Debian WheezyPostfix y Dovecot con usuarios virtuales mysql en Debian Wheezy
Postfix y Dovecot con usuarios virtuales mysql en Debian WheezyHenry Cristian Cuesta Vega
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Cluster MySQL en Windows
Cluster MySQL en WindowsCluster MySQL en Windows
Cluster MySQL en WindowsErick Cruz
 
William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sasRafael Toro
 
Instalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionInstalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionhugoAlvidrez
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan Ladetto
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandrajesusnoseq
 
Practica con firewall asa
Practica con firewall asaPractica con firewall asa
Practica con firewall asaMELGO2012
 
Practica con firewall ASA
Practica con firewall ASAPractica con firewall ASA
Practica con firewall ASAwebsyo
 
Practica con firewall asa
Practica con firewall asaPractica con firewall asa
Practica con firewall asawebsyo
 
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780Osvaldo Cantone
 

Similaire à Aprendiendo REDIS en 20 minutos (20)

Curso gratuito de Redis
Curso gratuito de RedisCurso gratuito de Redis
Curso gratuito de Redis
 
Integración LDAP + SAMBA
Integración LDAP + SAMBAIntegración LDAP + SAMBA
Integración LDAP + SAMBA
 
Curso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpCurso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmp
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Scapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de redScapy. Generación y manipulación básica de paquetes de red
Scapy. Generación y manipulación básica de paquetes de red
 
Postfix y Dovecot con usuarios virtuales mysql en Debian Wheezy
Postfix y Dovecot con usuarios virtuales mysql en Debian WheezyPostfix y Dovecot con usuarios virtuales mysql en Debian Wheezy
Postfix y Dovecot con usuarios virtuales mysql en Debian Wheezy
 
Manual de uso_de_squid
Manual de uso_de_squidManual de uso_de_squid
Manual de uso_de_squid
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Cluster MySQL en Windows
Cluster MySQL en WindowsCluster MySQL en Windows
Cluster MySQL en Windows
 
William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sas
 
Instalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionInstalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacion
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandra
 
Practica con firewall asa
Practica con firewall asaPractica con firewall asa
Practica con firewall asa
 
Practica con firewall ASA
Practica con firewall ASAPractica con firewall ASA
Practica con firewall ASA
 
Practica con firewall asa
Practica con firewall asaPractica con firewall asa
Practica con firewall asa
 
Guia cluster
Guia clusterGuia cluster
Guia cluster
 
Exposicion Mysql
Exposicion MysqlExposicion Mysql
Exposicion Mysql
 
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
IoT: Servidor web con_arduino_ethernet_shield_y_display_lcd 44780
 

Dernier

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Dernier (20)

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 

Aprendiendo REDIS en 20 minutos

  • 1. REDIS en Acción Aprendiendo REDIS en 20 minutos Gonzalo Chacaltana gchacaltanab
  • 2.
  • 3. 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.
  • 4.
  • 5. 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
  • 6. 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
  • 7. 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).
  • 8. 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
  • 9.
  • 10. 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”
  • 11. 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”
  • 12. 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”
  • 13. 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"
  • 14. 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"
  • 15. 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
  • 16. 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"
  • 17. 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.
  • 18. 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"
  • 19. 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"
  • 20. 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"
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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"
  • 25. Documentación Documentación oficial de redis: http://redis.io/documentation Tiago Macedo, Fred Oliveira Link Gonzalo Chacaltana gchacaltanab