Installing Redis
Redis is installed directly in the host machine. We do not run it in a docker container mainly because we do not have to.
1 instance in each env will always only we responsible for running redis.
Step
# Update ubuntu with latest releases of redis
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
# add the latest version lists to /etc/apt
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
# update apt to read from the latest list
sudo apt update
# install redis
sudo apt install redis-server redis-tools
# redis tuning
sudo nano /etc/redis/redis.conf
# ctrl+w, type the setting below to find the line in redis.confg
# supervised systemd
# requirepass <password>
# bind 127.0.0.1 -::1 private.ip.address.access.redis
# maxmemory <instance-memory * 0.85)
# maxmemory-policy volatile-lru
# kernel tuning (persisted across restarts)
cat <<'EOF' | sudo tee /etc/sysctl.d/99-redis.conf
vm.overcommit_memory=1
vm.swappiness=1
net.core.somaxconn=1024
net.ipv4.tcp_max_syn_backlog=1024
EOF
sudo sysctl --system
# disable transparent huge pages (THP)
cat <<'EOF' | sudo tee /etc/systemd/system/disable-thp.service
[Unit]
Description=Disable Transparent Huge Pages
After=network.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp.service
# logrotate redis logs
cat <<'EOF' | sudo tee /etc/logrotate.d/redis
/var/log/redis/redis.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
EOF