Redis es un servidor de estructura de datos en memoria, podemos simplificarlos a una estructura de llave-valor, es usado por muchas aplicaciones ya que combina la flexibilidad con la rapidez, haciendose muy popular en el desarrollo.
Redis comenzo cerca del 2009 como un almacenamiento de llave-valor desarrollado por Salvatore Sanfilippo para mejorar el desempeño su propio LLOOGG, como analisis de producto. Redis ganó popularidad después de obtener el apoyo de personas y empresas del mundo de los desarrolladores y ha contado con el apoyo de VMware, quien contrató a Salvatore y Pieter Noordhuis para trabajar a tiempo completo en el proyecto.
Actualmente con el uso de las nuevas tecnologias como aplicaciones en tiempo real, buscamos la soluciones que sean mas rapidas, un tema que siempre suele salir es el uso de base de datos relaciones y no relaciones, dado que las no relaciones presentan mejores alternativas para estos casos especificos. Podemos ponernos hablar de cual tipo es mejor, pero ese es otro tema.
Ahora bien, una alternativa a estos, podemos decir que es Redis por que puede presentar una velocidad a una base de datos no relacional, pero no recomiendan el uso de este si se desea que los datos persistan por mucho tiempo.
Instalacion
Para obtener Redis podemos instalarlo en nuestra plataforma de preferencia.
Installing Redis
Tipos de Datos en Redis
Como hemos comentado, Redis puede funcionar como una base de datos no relacional, recordando igual que solo en casos donde no queremos que los datos persistan por mucho tiempo.
Ahora teniendo eso en cuenta, podemos hablar de los tipo de datos que podemos guardar en una estructura llave-valor
Strings: podemos guardar strings e igual binarios, lo unico que debes tener en cuenta que no debe pasar de los 512MB.
Lists: son listas ordenadas de cadenas binarias, esto quiere decir que cuentan con un index.
Hashes: Al igual que las tablas hash tradicionales, los hash en Redis almacenan varios campos y sus valores dentro de una clave específica. Los hashes son una opción perfecta para mapear objetos complejos dentro de Redis
Tal vez ahora podemos hablar de como podemos usar Redis, hacer consultas, agregar datos y modificarlos, bueno, todo se puede hacer desde redis-cli, con este podemos conectarnos para poder realizar estas operaciones.
Conectarse
redis-cli -h <host> -p <port>
host: puede ser una ip.
port: puerto donde se encuentra redis, por default usa el 6379
Usando Redis desde Python con redis-py
Para usar redis en nuestros proyectos podemos dar una leida al repositorio redis-py github
De igual forma podemos instalarlo desde pip
O con easy_install
Ejemplo
>>> import redis
>>> redis = redis.Redis(host='localhost', port=6379, db=0)
>>> redis.smembers('circle:jdoe:soccer')
set(['users:toby', 'users:adam', 'users:apollo', 'users:mike'])
>>> redis.sadd('circle:jdoe:soccer', 'users:fred')
True
>>> redis.smembers('circle:jdoe:soccer')
set(['users:toby', 'users:adam', 'users:apollo', 'users:mike', 'users:fred'])
Ahora podemos dejar algunos ejemplos de como interactuar con nuestros datos, esto podemos hacer usando redis-cli
Para traer las llaves actuales en Redis
╰─$ redis-cli
127.0.0.1:6379> KEYS *
1) "notificaciones"
Ahora, podemos obtener el tipo de dato que guarda la llave, esto nos puede retornar string, hash, list, set o zset
╰─$ redis-cli
127.0.0.1:6379> TYPE notificaciones
list
Por ultimo, podemos saber la ultima vez que se guardo esa llave
╰─$ redis-cli
127.0.0.1:6379> OBJECT IDLETIME notificaciones
(integer) 2873
Ahora si queremos obtener las llaves que empiecen por n y terminen en nes, podemos hacerlo
╰─$ redis-cli
127.0.0.1:6379> KEYS n*nes
1) "notificaciones"