miércoles, 14 de abril de 2021

Levantar Redis con Docker-Compose, contraseña y persistencia

Hola, este es un turorial al hueso, a lo "pelao nerd", de como levantar Redis con Docker. No voy a enseñar que es REDIS, solo que es una Base de Datos no SQL y no Relacional. Algunos le llaman Base de Datos Caché. Es muy rápida para cuando no quieres ir a la Base de datos a cada rato, cuando hay datos que no cambian en un año o meses, mejor dejarlos en esta base y no "molestar" a la base de datos transaccional real (SQL Server, Oracle, PostgreSQL)

Levantaremos Redis de esta forma:

  • Linux, en mi caso es un RHEL (Red Hat 7.9)
  • usando docker-componse.
  • seteando una contraseña para darle seguridad (así es más seguro).
  • seteando un volumen de persistencia de datos (así en caso de reiniciar el servidor o el POD, los datos no se pierden).
  • seteando un máximo de memoria así no te "come" toda la RAM del Server.
  • usando comandos y un cliente para validar datos.

Asumo que

  • estas usando Linux
  • tienes instalado docker
  • tienes instalado docker-compose
  • sabes algunos conceptos básicos de docker y comandos

PASOS

Entrar como root

ir a la raiz y crear carpeta

mkdir redis

Darle permisos al usuario root

chmod -R 744 redis

crear archivo redis.conf indicando máxima memoria 4GB

maxmemory 4gb
maxmemory-policy allkeys-lru

crear archivo docker-compose.yaml, asignando password "mipass", port por defecto 6379 y un nombre de pod "redis".

version: "3.8"
services:
 redis:
    container_name: "redis"
    image: "redis:alpine"
    command: redis-server /usr/local/etc/redis/redis.conf --requirepass mipass
    ports:
     - "6379:6379"
    volumes:
     - $PWD/redis-data:/var/lib/redis/
     - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
     - REDIS_REPLICATION_MODE=master
    networks:
      node_net:
        ipv4_address: 172.28.1.4
# networking for the Redis container
networks:
  node_net:
    ipam:
      driver: default
      config:
        - subnet: 172.28.0.0/16

Quedará así:


Subir con

docker-compose up -d

dirá:


Se creará la carpeta redis-data de forma automática:


Validar que haya quedado corriendo

docker-compose ps


Entrar al pod y ver que pida la clave

docker exec -it redis sh

Accedemos al Redis-cli

redis-cli

Probemos un comando para ver que pida la clave, como keys *


Ingresemos la clave: auth mipass y dirá OK

Si usamos de nuevo keys * traerá un arreglo vacío de datos.

Probando de Windows

Baja este cliente de Redis llamado Redily 0.9.22 que una vez pillé y lo subí a una nube. Ahora es medio complicado encontrarlo.


Asumiendo que tienes acceso a ese servidor y ese port 6379. Coloca la Key abajo.
Accedimos y podemos usarlo para consultar las keys almacenadas. 
Igualmente se puede usar de Java o Net.