Redis 配置
本文档介绍如何配置Redis缓存服务以支持学习追踪系统。
📋 系统要求
- Redis: 6.0+
- 内存: 1GB RAM (推荐2GB+)
🚀 安装Redis
Ubuntu/Debian
bash
sudo apt update
sudo apt install redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-serverCentOS/RHEL
bash
sudo yum install redis
sudo systemctl start redis
sudo systemctl enable redismacOS
bash
brew install redis
brew services start redis⚙️ Redis配置
主要配置文件 (redis.conf)
conf
# 网络设置
bind 127.0.0.1
protected-mode yes
port 6379
# 安全设置
requirepass your_redis_password
# 内存设置
maxmemory 512mb
maxmemory-policy allkeys-lru
# 持久化设置
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"🔧 项目环境变量
在 .env 文件中添加:
bash
# Redis配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
REDIS_DB=0📊 缓存策略
缓存TTL配置
javascript
const CACHE_TTL = {
USER: 3600, // 用户信息 1小时
DASHBOARD: 300, // 仪表板数据 5分钟
SESSIONS: 1800, // 学习记录 30分钟
PROJECTS: 1800, // 项目列表 30分钟
ANALYTICS: 600, // 分析数据 10分钟
BLACKLIST: 86400, // Token黑名单 24小时
LOGIN_ATTEMPTS: 900, // 登录尝试 15分钟
SYSTEM_INFO: 300, // 系统信息 5分钟
NOTIFICATIONS: 1800 // 通知数据 30分钟
};缓存键前缀
javascript
const CACHE_KEYS = {
USER: (id) => `user:${id}`,
DASHBOARD: (userId) => `dashboard:${userId}`,
SESSIONS: (userId) => `sessions:${userId}`,
PROJECTS: (userId) => `projects:${userId}`,
ANALYTICS: (userId) => `analytics:${userId}`,
BLACKLIST: 'blacklisted_tokens',
LOGIN_ATTEMPTS: (ip) => `login_attempts:${ip}`,
SYSTEM_INFO: 'system_info',
NOTIFICATIONS: (userId) => `notifications:${userId}`
};🔍 性能优化
内存优化
conf
maxmemory 1gb
maxmemory-policy allkeys-lru
maxmemory-samples 5网络优化
conf
tcp-keepalive 300
tcp-backlog 511
tcp-nodelay yes📈 监控和维护
性能监控
bash
# 查看Redis信息
redis-cli info
# 查看内存使用
redis-cli info memory
# 查看连接数
redis-cli info clients慢查询监控
conf
slowlog-log-slower-than 10000
slowlog-max-len 128bash
# 查看慢查询
redis-cli slowlog get 10💾 备份和恢复
自动备份脚本
bash
#!/bin/bash
BACKUP_DIR="/var/backups/redis"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
redis-cli BGSAVE
# 等待备份完成
while [ "$(redis-cli info persistence | grep rdb_bgsave_in_progress | cut -d: -f2)" != "0" ]; do
sleep 1
done
cp /var/lib/redis/dump.rdb $BACKUP_DIR/redis_${DATE}.rdb
gzip $BACKUP_DIR/redis_${DATE}.rdb
find $BACKUP_DIR -name "*.rdb.gz" -mtime +7 -delete恢复数据
bash
sudo systemctl stop redis-server
sudo cp backup_file.rdb /var/lib/redis/dump.rdb
sudo systemctl start redis-server🔐 安全配置
网络安全
conf
bind 127.0.0.1
protected-mode yes
requirepass your_strong_password访问控制
bash
sudo useradd -r -s /bin/false redis
sudo chown redis:redis /var/lib/redis
sudo chown redis:redis /var/log/redis🚨 故障排除
常见问题
连接被拒绝
bash
sudo systemctl status redis-server
netstat -tlnp | grep 6379
redis-cli ping内存不足
bash
redis-cli info memory
redis-cli --bigkeys性能问题
bash
redis-cli slowlog get 10
redis-cli info stats日志分析
bash
sudo tail -f /var/log/redis/redis-server.log
sudo journalctl -u redis-server -f