资讯详情

资讯详情

Linux系统下Redis安装配置与优化指南

1. Redis简介与安装准备RedisRemote Dictionary Server是一个开源的、基于内存的键值存储数据库由Salvatore Sanfilippo用C语言开发。它支持多种数据结构包括字符串、哈希、列表、集合、有序集合等常用于缓存、消息队列、会话存储等场景。在Linux系统上安装Redis前我们需要做好以下准备工作确认系统版本建议使用较新的Linux发行版如Ubuntu 18.04、CentOS 7准备root或具有sudo权限的用户账号确保系统可以访问互联网以下载安装包提示生产环境建议使用专用用户运行Redis服务而非直接使用root账户2. 安装依赖环境2.1 安装GCC编译器Redis是用C语言编写的安装前需要确保系统已安装GCC编译器# 检查是否已安装gcc gcc --version # 如果未安装执行以下命令安装 sudo apt update # Ubuntu/Debian sudo apt install -y gcc make # 或者对于CentOS/RHEL sudo yum install -y gcc make2.2 安装其他依赖项# Ubuntu/Debian sudo apt install -y libc6-dev tcl # CentOS/RHEL sudo yum install -y glibc-devel tcl3. 下载与安装Redis3.1 获取Redis源码包建议从官网下载最新稳定版# 创建安装目录 sudo mkdir -p /usr/local/redis cd /usr/local/redis # 下载Redis以6.2.6为例 sudo wget https://download.redis.io/releases/redis-6.2.6.tar.gz sudo tar xzf redis-6.2.6.tar.gz cd redis-6.2.63.2 编译安装Redis# 编译 sudo make # 可选运行测试耗时较长 sudo make test # 安装 sudo make install注意如果make test报错可能是系统时间设置有问题可以尝试同步时间后重试sudo ntpdate pool.ntp.org4. 配置Redis服务4.1 基本配置编辑Redis配置文件sudo cp redis.conf redis.conf.bak # 备份原始配置 sudo nano redis.conf建议修改以下关键配置bind 0.0.0.0 # 允许远程连接生产环境应限制IP protected-mode no # 关闭保护模式 daemonize yes # 以守护进程运行 requirepass yourpassword # 设置访问密码 maxmemory 2gb # 根据服务器内存调整 maxmemory-policy allkeys-lru # 内存满时的淘汰策略4.2 创建systemd服务创建服务文件sudo nano /etc/systemd/system/redis.service添加以下内容[Unit] DescriptionRedis In-Memory Data Store Afternetwork.target [Service] Userredis Groupredis ExecStart/usr/local/bin/redis-server /usr/local/redis/redis-6.2.6/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Restartalways [Install] WantedBymulti-user.target创建专用用户并设置权限sudo adduser --system --group --no-create-home redis sudo chown -R redis:redis /usr/local/redis sudo chmod 770 /usr/local/redis5. 启动与管理Redis5.1 启动Redis服务sudo systemctl daemon-reload sudo systemctl start redis sudo systemctl enable redis5.2 验证服务状态sudo systemctl status redis redis-cli ping # 应返回PONG5.3 常用管理命令# 连接Redis redis-cli -a yourpassword # 查看信息 INFO # 查看内存使用 INFO memory # 查看客户端连接 CLIENT LIST # 安全关闭 SHUTDOWN SAVE6. 安全配置建议防火墙设置sudo ufw allow 6379/tcp # Ubuntu sudo firewall-cmd --permanent --add-port6379/tcp # CentOS禁用危险命令 在redis.conf中添加rename-command FLUSHALL rename-command CONFIG rename-command SHUTDOWN 定期备份# 创建备份目录 sudo mkdir /var/redis-backups sudo chown redis:redis /var/redis-backups # 手动备份 redis-cli -a yourpassword SAVE sudo cp /var/lib/redis/dump.rdb /var/redis-backups/dump-$(date %F).rdb7. 常见问题解决7.1 编译错误问题make时报错jemalloc/jemalloc.h: No such file or directory解决make MALLOClibc7.2 连接问题问题无法远程连接Redis检查确认redis.conf中bind设置检查防火墙设置确认protected-mode设置为no检查密码是否正确7.3 内存问题问题Redis占用内存过高解决检查并优化数据结构使用设置适当的maxmemory和淘汰策略考虑使用Redis集群分散负载8. 性能优化建议持久化配置根据需求选择RDB或AOF生产环境建议同时启用两者网络优化# 在redis.conf中调整 tcp-keepalive 60 tcp-backlog 511内核参数调整echo vm.overcommit_memory 1 /etc/sysctl.conf echo net.core.somaxconn 65535 /etc/sysctl.conf sysctl -p监控设置使用INFO命令定期收集指标考虑使用RedisInsight等可视化工具9. 高级配置9.1 主从复制在从节点redis.conf中添加replicaof masterip masterport masterauth master-password9.2 哨兵模式创建sentinel.confport 26379 sentinel monitor mymaster 127.0.0.1 6379 2 sentinel auth-pass mymaster yourpassword sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000启动哨兵redis-sentinel /path/to/sentinel.conf9.3 Redis集群创建多个节点在每个节点的redis.conf中启用集群cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000使用redis-cli创建集群redis-cli --cluster create \ 127.0.0.1:7000 127.0.0.1:7001 \ 127.0.0.1:7002 127.0.0.1:7003 \ 127.0.0.1:7004 127.0.0.1:7005 \ --cluster-replicas 1 -a yourpassword10. 维护与监控10.1 日常维护命令# 查看慢查询 redis-cli --latency redis-cli SLOWLOG GET 10 # 碎片整理 redis-cli MEMORY PURGE # 查看大key redis-cli --bigkeys10.2 日志分析建议在redis.conf中配置logfile /var/log/redis/redis.log loglevel notice定期检查日志sudo tail -f /var/log/redis/redis.log10.3 备份策略RDB备份# 手动触发 redis-cli SAVE # 或 redis-cli BGSAVEAOF备份 确保配置appendonly yes appendfsync everysec自动化备份脚本#!/bin/bash BACKUP_DIR/var/redis-backups DATE$(date %F) redis-cli -a yourpassword SAVE cp /var/lib/redis/dump.rdb $BACKUP_DIR/dump-$DATE.rdb find $BACKUP_DIR -name *.rdb -mtime 7 -delete11. 升级Redis版本停止当前Redis服务备份数据和配置文件下载并编译新版本测试新版本功能逐步在生产环境部署# 示例升级步骤 sudo systemctl stop redis sudo cp /usr/local/redis/redis.conf /tmp/redis.conf.bak cd /usr/local/redis sudo wget https://download.redis.io/releases/redis-6.2.7.tar.gz sudo tar xzf redis-6.2.7.tar.gz cd redis-6.2.7 sudo make sudo make install sudo cp /tmp/redis.conf.bak ./redis.conf sudo systemctl start redis12. 卸载Redis如需完全卸载Redissudo systemctl stop redis sudo systemctl disable redis sudo rm /etc/systemd/system/redis.service sudo systemctl daemon-reload sudo deluser redis sudo rm -rf /usr/local/redis sudo rm /usr/local/bin/redis-*
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →