🧱 一、Redis 简介
Redis(Remote Dictionary Server) 是一个高性能的键值数据库,常用于:
-
缓存系统(如页面缓存、Session缓存)
-
消息队列(Pub/Sub)
-
排行榜、计数器
-
分布式锁、布隆过滤器等
Redis 支持多种数据类型:
string、list、set、zset(有序集合)、hash、bitmap、hyperloglog、stream
⚙️ 二、Redis 安装方法
方式 1:通过 APT 安装(最简便)
sudo apt update sudo apt install redis-server -y
安装完成后检查版本:
redis-server -v
方式 2:从源码编译安装(推荐生产环境)
# 1. 安装依赖
sudo apt update
sudo apt install build-essential tcl -y
# 2. 下载源码
wget https://download.redis.io/releases/redis-7.2.5.tar.gz
tar xzf redis-7.2.5.tar.gz
cd redis-7.2.5
# 3. 编译
make
make test
sudo make install
安装完成后,Redis 可执行文件通常在:
/usr/local/bin/
包括:
redis-server # Redis 服务端
redis-cli # 命令行客户端
redis-benchmark # 性能测试工具
redis-check-rdb # RDB 文件检查工具
redis-check-aof # AOF 文件检查工具
🚀 三、启动 Redis 服务
1. 前台启动
redis-server
2. 后台启动(推荐)
redis-server /etc/redis/redis.conf
或:
redis-server --daemonize yes
3. 测试连接
redis-cli
127.0.0.1:6379> ping
PONG
🧩 四、Redis 配置文件详解
Redis 主配置文件路径:
/etc/redis/redis.conf
或源码安装后:
/usr/local/etc/redis/redis.conf
以下是主要配置项的详细解释:
| 配置项 | 说明 | 示例值 |
|---|---|---|
| bind | 监听地址(默认仅本地) | bind 127.0.0.1 |
| port | 服务端口 | port 6379 |
| daemonize | 是否后台运行 | yes |
| pidfile | PID 文件位置 | /var/run/redis_6379.pid |
| logfile | 日志文件路径 | /var/log/redis/redis-server.log |
| databases | 数据库数量(逻辑分库) | databases 16 |
| requirepass | 访问密码(安全推荐设置) | requirepass your_password |
| timeout | 空闲连接超时(秒) | timeout 300 |
| tcp-keepalive | TCP 保活时间 | 300 |
| maxclients | 最大客户端连接数 | 10000 |
| maxmemory | 最大内存使用量 | maxmemory 512mb |
| maxmemory-policy | 内存淘汰策略 | volatile-lru、allkeys-lru、noeviction 等 |
| save | RDB 快照触发条件 | save 900 1(900 秒内至少 1 次修改) |
| dir | 数据持久化目录 | /var/lib/redis |
| appendonly | 是否启用 AOF 持久化 | yes |
| appendfilename | AOF 文件名 | appendonly.aof |
| appendfsync | AOF 同步频率 | everysec(每秒刷盘) |
| protected-mode | 保护模式(无密码时禁止远程访问) | yes |
🧠 五、Redis 持久化机制
Redis 提供两种持久化方式:
1. RDB(快照)
周期性保存内存数据到磁盘的二进制文件(默认是 dump.rdb)。
配置示例:
save 900 1
save 300 10
save 60 10000
优点:节省空间、恢复快。
缺点:可能丢失最近一次快照后的数据。
2. AOF(Append Only File)
每次写操作都会追加到日志文件中。
配置:
appendonly yes
appendfsync everysec
appendfsync 参数:
-
always:每次写入都刷盘(最安全、最慢) -
everysec:每秒刷盘(默认推荐) -
no:由操作系统决定何时刷盘(性能最好,但风险大)
🧰 六、Redis 开机自启配置
sudo systemctl enable redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server
如果是源码安装:
sudo cp utils/redis_init_script /etc/init.d/redis
sudo update-rc.d redis defaults
🔐 七、安全配置建议
-
设置密码
requirepass StrongPass123 -
限制访问来源
bind 127.0.0.1 192.168.1.100 protected-mode yes -
关闭命令危险功能
rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command CONFIG "" rename-command SHUTDOWN "" -
使用防火墙规则
sudo ufw allow 6379/tcp sudo ufw deny from any to any port 6379
⚡ 八、性能优化建议
| 优化项 | 建议 |
|---|---|
| 内存优化 | 设置 maxmemory 与 maxmemory-policy |
| 网络优化 | 使用 UNIX socket (unixsocket /tmp/redis.sock) |
| 持久化优化 | AOF 使用 everysec |
| 禁用 swap | vm.swappiness=0 |
| 禁用透明大页 | echo never > /sys/kernel/mm/transparent_hugepage/enabled |
| 使用 RDB 结合 AOF 混合持久化(Redis 4.0+) | 开启 aof-use-rdb-preamble yes |
🧾 九、常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
Could not connect to Redis | Redis 未启动或端口被防火墙阻止 | 检查 systemctl status redis-server,或用 netstat -tlnp |
DENIED Redis is running in protected mode | 远程访问被保护模式拦截 | 修改配置:protected-mode no 并允许访问 IP |
OOM command not allowed | 内存达到上限,且策略为 noeviction | 修改 maxmemory-policy |
RDB/AOF 文件损坏 | 系统宕机或磁盘错误 | 使用 redis-check-rdb 或 redis-check-aof --fix 修复 |
🧮 十、验证配置
修改配置后重启服务:
sudo systemctl restart redis-server
验证:
redis-cli
> CONFIG GET dir
> INFO memory
> PING
1795

被折叠的 条评论
为什么被折叠?



