Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和消息中间件。它支持多种数据结构,包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,这使得Redis在性能敏感型应用中表现出色。
在实际项目中选用Redis主要基于以下几个考量:
在开始安装前,建议先检查Linux系统环境:
bash复制# 查看系统版本
cat /etc/redhat-release # CentOS/RHEL
lsb_release -a # Ubuntu/Debian
# 检查内存情况
free -h
# 检查磁盘空间
df -h
注意:Redis是内存数据库,建议生产环境至少预留2GB可用内存。对于学习测试环境,512MB内存也能运行。
如果系统已存在旧版Redis,建议先彻底卸载:
bash复制# 停止Redis服务
redis-cli shutdown
# 或强制停止
pkill -9 redis-server
# 删除安装文件
rm -rf /usr/local/redis*
rm -rf /etc/redis
rm -f /usr/local/bin/redis-*
# 清理残留配置
find / -name "*redis*" | xargs rm -rf
推荐使用官方稳定版本(当前最新稳定版为7.0.x):
bash复制cd /usr/local/src
wget https://download.redis.io/releases/redis-7.0.11.tar.gz
tar xzf redis-7.0.11.tar.gz
cd redis-7.0.11
Redis是C语言编写,需要gcc编译器:
bash复制# CentOS/RHEL
yum install -y gcc make
# Ubuntu/Debian
apt-get update && apt-get install -y build-essential
# 验证gcc版本(要求4.9+)
gcc --version
常见问题:如果遇到"jemalloc/jemalloc.h: No such file"错误,可执行:
bash复制make distclean && make
指定安装目录便于管理:
bash复制make PREFIX=/usr/local/redis-7.0.11 install
编译成功后,关键文件位置:
复制默认配置文件并修改:
bash复制mkdir -p /etc/redis
cp /usr/local/src/redis-7.0.11/redis.conf /etc/redis/6379.conf
主要配置项修改建议:
ini复制# 守护进程模式
daemonize yes
# 绑定IP(生产环境建议指定)
# bind 127.0.0.1
# 保护模式
protected-mode no
# 端口号
port 6379
# 超时设置
timeout 300
# 日志文件
logfile "/var/log/redis_6379.log"
# 数据库数量
databases 16
# 密码认证
requirepass yourStrongPassword
# 最大内存
maxmemory 2gb
maxmemory-policy allkeys-lru
方便通过systemctl管理:
bash复制cat > /etc/systemd/system/redis.service <<EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/redis-7.0.11/bin/redis-server /etc/redis/6379.conf
ExecStop=/usr/local/redis-7.0.11/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 创建专用用户
useradd -r -s /sbin/nologin redis
chown -R redis:redis /usr/local/redis-7.0.11
mkdir -p /var/log/redis && chown redis:redis /var/log/redis
# 重载服务配置
systemctl daemon-reload
systemctl enable redis
systemctl start redis
bash复制# CentOS 7+
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
# Ubuntu/Debian
ufw allow 6379/tcp
ini复制tls-port 6379
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
bash复制iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
ini复制# 最大连接数
maxclients 10000
# 持久化策略
save 900 1 # 15分钟内至少1个key变化
save 300 10 # 5分钟内至少10个key变化
save 60 10000 # 1分钟内至少10000个key变化
# 内存碎片整理
activedefrag yes
active-defrag-ignore-bytes 100mb
active-defrag-threshold-lower 10
bash复制# 启动服务
systemctl start redis
# 停止服务
systemctl stop redis
# 查看状态
systemctl status redis
# 命令行连接
redis-cli -a yourpassword
RDB快照备份:
bash复制# 手动触发备份
redis-cli -a yourpassword SAVE
# 备份文件默认在/var/lib/redis/dump.rdb
cp /var/lib/redis/dump.rdb /backup/redis-$(date +%F).rdb
AOF日志备份:
bash复制# 重写AOF文件
redis-cli -a yourpassword BGREWRITEAOF
# 备份AOF文件
cp /var/lib/redis/appendonly.aof /backup/
官方推荐的GUI工具:
bash复制# Docker方式运行
docker run -d --name redisinsight -p 8001:8001 redislabs/redisinsight:latest
访问 http://your-server-ip:8001 即可使用
bash复制# 监控实时命令
redis-cli -a yourpassword MONITOR
# 查看慢查询
redis-cli -a yourpassword SLOWLOG GET 10
# 查看内存使用
redis-cli -a yourpassword INFO MEMORY
# 批量删除key
redis-cli -a yourpassword --scan --pattern "temp:*" | xargs redis-cli -a yourpassword DEL
端口冲突:
bash复制netstat -tulnp | grep 6379
权限问题:
bash复制chown -R redis:redis /var/lib/redis
配置文件错误:
bash复制redis-server /etc/redis/6379.conf --test
内存不足:
bash复制# 查看内存使用
redis-cli -a yourpassword INFO memory
连接数过多:
bash复制# 查看连接数
redis-cli -a yourpassword CLIENT LIST
持久化阻塞:
bash复制# 查看持久化状态
redis-cli -a yourpassword INFO persistence
部署架构选择:
监控方案:
bash复制# 使用Prometheus+Granafa监控
docker run -d --name redis-exporter -p 9121:9121 oliver006/redis_exporter
备份策略:
版本升级:
redis-cli --cluster check验证集群健康