logo cosasdedevs

Cómo utilizar Redis con Python

Cómo utilizar Redis con Python

My Profile
Nov 20, 2020

¡Hola! Una semana más seguimos con Redis y esta vez vamos a aprender a utilizarlo con Python, para en un posterior tutorial ya trabajar con él desde Django que es mi meta final para esta serie de tutoriales 💪.

Para utilizar Redis en nuestros proyectos con Python, lo primero que debemos hacer es instalarlo. Para ello lanzamos el siguiente comando:

pip install redis

Para poder realizar pruebas deberemos tener instalado Redis en nuestro PC. Para este ejemplo yo voy a utilizar Docker y un contenedor de Redis pero podéis instalarlo directamente en vuestra máquina. Si queréis ver más información acerca del proceso, os dejo este enlace.

Conectarnos a Redis desde Python

Si queremos conectarnos a Redis desde Python, solo tenemos que insertar la siguiente línea en nuestro código:

r = redis.Redis(host='127.0.0.1', port=6379, db=0)

En la que deberéis sustituir el host, puerto y db por la vuestra. Si lo habéis hecho siguiendo mis tutoriales anteriores, de esta forma os funcionará.

En el caso de que vuestra bbdd tenga una contraseña o queráis añadir configuración extra, deberéis realizar la conexión con el método StrictRedis de la siguiente forma:

r = redis.StrictRedis(host='127.0.0.1', port=6379, db=0, password=None, socket_timeout=None, connection_pool=None, charset='utf-8', errors='strict', unix_socket_path=None)

Crear y Recuperar datos

Si queremos setear un valor, solo necesitamos utilizar el método set con la clave y el valor:

r.set('foo', 'bar')

Para recuperarlo, utilizaremos el método get pasando la clave por parámetro:

r.get('foo')

Este método nos retornará el valor de la clave en formato de bytes. Si queremos convertirlo en string, podemos utilizar la función decode:

r.get('foo').decode("utf-8")

Añadir un ciclo de vida a nuestros datos

En el caso de que queramos darle un tiempo de vida a nuestras claves, podemos utilizar los parámetros ex para añadir cuantos segundos queramos que existan o px en el caso de querer añadir el tiempo en milisegundos:

r.set('foo', 'bar', ex=10)

En este caso, la clave foo tendrá un tiempo de vida de 10 segundos.

Para ver cuanto tiempo de vida le queda podemos utilizar los métodos ttl para verlo en segundos y pttl para que nos lo muestre en milisegundos:

r.pttl('foo')

Si nos arrepentimos y queremos eliminar el límite de tiempo, utilizaremos el método persist:

r.persist('foo')

Si ahora queremos volver a añadir un tiempo de vida a esta clave, utilizaremos el método setex en el que deberemos pasar la clave, el tiempo de vida y el valor que le queramos dar:

r.setex('foo', 15, 'bar2')

En el caso de querer pasarlo en milisegundos, utilizaremos el método psetex.

Operaciones atómicas

Como ya vimos en anteriores posts, una operación atómica en Redis es un proceso que siempre se realiza en su totalidad y que si no es así, tiene la capacidad de deshacerse.

En el caso de Redis, podemos utilizarlas para crear valores que se incrementen y decrementen en nuestras claves. Para utilizarlos crearemos una clave con un valor numérico y posteriormente lanzaremos las funciones para que se incremente y decremente el valor de esa clave:

r.set('contador', '5')

r.incr('contador')
# Ahora el valor es 6
r.incr('contador')
# Ahora el valor es 7
r.decr('contador')
# Ahora el valor es 6

Si queremos incrementar el valor, utilizaremos el método incr, en caso contrario, usaremos el método decr.

Ahora bien, si lo que queremos es aumentar o disminuir el valor en un número dado por nosotros y no de uno en uno, utilizaremos los métodos incrby y decrby en el que pasaremos la clave y el valor:

r.set('contador', '5')

r.incrby('contador', '3')
# Ahora el valor es 8
r.incrby('contador', '4')
# Ahora el valor es 12
r.decrby('contador', '5')
# Ahora el valor es 7

Conclusiones

Como veis, la transición de Redis desde consola al lenguaje de Python es bastante sencilla, ya que los métodos se llaman iguales que los comandos, solo se puede dudar a la hora de como pasar ciertos parámetros pero para eso tenemos la doc 😎.

Como siempre, os recomiendo seguirme en Twitter y nos vemos en el siguiente tutorial 👋.

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para mejorar la experiencia del usuario a través de su navegación. Si pulsas entendido aceptas su uso. Ver política de cookies.

🐍 Sígueme en Twitter

Si te gusta el contenido que subo y no quieres perderte nada, sígueme en Twitter y te avisaré cada vez que cree contenido nuevo 💪
Luego ¡Te sigo!