Despliegue de Redis 6.2+ mediante Compilación desde el Código Fuente en Entornos Linux

  1. Preparación del Entorno y Compilación

Para compilar Redis desde su código fuente, es necesario contar con las herramientas de desarrollo adecuadas. En distribuciones basadas en RHEL/CentOS, ejecutaremos los siguientes comandos para instalar las dependencias y habilitar un compilador GCC moderno.


# Instalación de herramientas base y compiladores
sudo yum -y install gcc gcc-c++ make cmake wget
sudo yum -y install centos-release-scl devtoolset-9-gcc devtoolset-9-gcc-c++

# Activación del entorno de compilación con GCC 9
scl enable devtoolset-9 bash
gcc --version

A continuación, descargaremos, extraeremos y compilaremos la versión 6.2.10 de Redis, especificando un directorio de instalación personalizado.


REDIS_VER="6.2.10"
TARGET_DIR="/opt/redis-stack"

wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz
tar -xzf redis-${REDIS_VER}.tar.gz
cd redis-${REDIS_VER}

# Compilación e instalación
make -j$(nproc)
make install PREFIX=${TARGET_DIR}

  1. Configuración del Servidor

Una vez compilado, copiaremos el archivo de configuración por defecto a una ubicación estándar como /etc/ y aplicaremos los ajustes necesarios para la operación en red y la seguridad.


cp redis.conf /etc/redis-server.conf

# Modificaciones clave mediante sed
sed -i 's/^bind 127.0.0.1.*/bind 0.0.0.0/' /etc/redis-server.conf
sed -i 's/^daemonize no/daemonize yes/' /etc/redis-server.conf
sed -i 's/^protected-mode yes/protected-mode no/' /etc/redis-server.conf

# Configuración de seguridad y políticas
sed -i '/^# requirepass/a requirepass MyStr0ngR3disP@ss!' /etc/redis-server.conf
sed -i '/^# maxmemory-policy/a maxmemory-policy allkeys-lru' /etc/redis-server.conf

Nota sobre el modo protegido: Si protected-mode se establece en yes, Redis solo aceptará conexiones locales a menos que se configure un bind específico o se defina una contraseña mediante requirepass. Para entornos de producción, se recomienda mantener el modo protegido activo y asegurar el acceso mediante credenciales o reglas de firewall.

  1. Variables de Entorno y Enlaces Simbólicos

Para facilitar la ejecución de los binarios desde cualquier ruta, crearemos enlaces simbólicos en el directorio de ejecución del sistema.


ln -sf /opt/redis-stack/bin/redis-server /usr/local/bin/redis-server
ln -sf /opt/redis-stack/bin/redis-cli /usr/local/bin/redis-cli

# Verificación
redis-server --version
redis-cli --version

  1. Integración con Systemd

Para gestionar Redis como un servicio del sistema, crearemos un archivo de unidad de systemd optimizado.


cat <<EOF | sudo tee /etc/systemd/system/redis.service
[Unit]
Description=Advanced key-value store (Redis)
Requires=network.target
After=network-online.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis-server.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
User=root

[Install]
WantedBy=multi-user.target
EOF

# Recarga de systemd y habilitación del servicio
sudo systemctl daemon-reload
sudo systemctl enable --now redis
sudo systemctl status redis

  1. Interacción con el Servidor y Autenticación

Al haber configurado una contraseña, cualquier interacción a través de la CLI requerirá autenticación previa. Redis 6 introdujo mejoras en el sistema ACL, pero la autenticación básica sigue el formato estándar.


redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH default MyStr0ngR3disP@ss!
OK
127.0.0.1:6379> ping
PONG

  1. Gestión de Memoria y Políticas de Evicción

Redis permite configurar cómo manejar la memoria cuando se alcanza el límite máximo. Las políticas de evicción determinan qué claves eliminar. A continuación, se detallan las opciones disponibles:

  • noeviction: Devuelve un error en operaciones de escritura cuando se alcanza el límite de memoria. Las lecturas y eliminaciones siguen funcionando.
  • allkeys-lru: Elimina las claves accedidas menos recientemente entre todas las claves.
  • allkeys-lfu: Elimina las claves accedidas con menor frecuencia entre todas las claves.
  • allkeys-random: Elimina claves al azar.
  • volatile-lru: Similar a allkeys-lru, pero solo aplica a claves que tienen un tiempo de expriación (TTL) configurado.
  • volatile-lfu: Similar a allkeys-lfu, pero solo para claves con TTL.
  • volatile-ttl: Elimina las claves con el tiempo de vida (TTL) restante más corto.
  • volatile-random: Elimina claves al azar, pero solo entre aquellas con TTL configurado.

Para consultar o modificar la política de evicción en tiempo de ejecución:


# Consultar política actual
redis-cli CONFIG GET maxmemory-policy

# Modificar política en caliente
redis-cli CONFIG SET maxmemory-policy volatile-lru

Para detener el servicio de manera controlada, se puede utilizar el cliente CLI o el gestor de servicios:


# Método 1: Vía CLI
redis-cli -a MyStr0ngR3disP@ss! shutdown

# Método 2: Vía Systemd
sudo systemctl stop redis

Etiquetas: Redis compilación linux systemd centos

Publicado el 7-6 16:06