Redis 从入门到精通:全平台安装与性能优化配置指南
Redis 从入门到精通(一):全平台安装与性能优化配置指南
目录
- 概述
- 平台安装指南
- 2.1 Windows平台安装
- 2.2 Linux平台安装
- 2.3 macOS平台安装
- 2.4 Docker平台安装
- Redis配置文件详解
- 3.1 基础配置
- 3.2 安全配置
- 3.3 持久化配置
- 3.4 内存管理
- 3.5 网络配置
- 3.6 高级配置
- 多平台配置示例
- 4.1 Windows平台配置示例
- 4.2 Linux平台配置示例
- 4.3 Docker平台配置示例
- Redis服务管理
- 5.1 Windows平台服务管理
- 5.2 Linux平台服务管理
- 5.3 macOS平台服务管理
- 5.4 Docker平台服务管理
- 验证安装
- 常见问题与解决方案
- 性能优化建议
- 附录
- 9.1 Redis 6新特性
- 9.2 资源链接
ps:当前最流行,使用较广的Redis 版本是6.x。本文也是基于这个版本。
1. 概述
Redis 6是一个开源的内存数据结构存储系统,可用作数据库、缓存和消息代理。本文档详细介绍Redis 6在不同操作系统平台上的安装方法及配置项说明。
2. 平台安装指南
2.1 Windows平台安装
2.1.1 使用MSI安装包(推荐)
- 访问Redis官方下载页面
- 下载最新的Redis 6.x MSI安装包
- 双击安装包,按照向导完成安装
- 选择是否将Redis作为Windows服务启动
2.1.2 使用压缩包安装
- 下载Redis 6.x的ZIP压缩包
- 解压到指定目录,如
C:\Redis
- 打开命令提示符(管理员权限)
- 进入Redis目录并运行以下命令启动Redis:
redis-server.exe redis.windows.conf
- 将Redis注册为Windows服务:
redis-server --service-install redis.windows.conf --loglevel verbose
- 启动服务:
redis-server --service-start
2.2 Linux平台安装
2.2.1 Ubuntu/Debian系统
# 更新包列表
sudo apt update# 安装Redis 6
sudo apt install redis-server# 验证安装
sudo systemctl status redis-server# 设置开机自启
sudo systemctl enable redis-server
2.2.2 CentOS/RHEL系统
# 安装EPEL仓库
sudo yum install epel-release# 安装Redis 6
sudo yum install redis# 启动Redis服务
sudo systemctl start redis# 验证服务状态
sudo systemctl status redis# 设置开机自启
sudo systemctl enable redis
2.2.3 源码编译安装
# 安装编译依赖
sudo apt-get install build-essential tcl # Ubuntu/Debian
sudo yum install gcc make # CentOS/RHEL# 下载Redis源码
wget http://download.redis.io/releases/redis-6.2.6.tar.gztar xzf redis-6.2.6.tar.gz
cd redis-6.2.6# 编译安装
make
make test
sudo make install# 创建配置和数据目录
sudo mkdir -p /etc/redis /var/lib/redis# 复制配置文件
sudo cp redis.conf /etc/redis/# 创建Redis系统服务文件
# (内容参见下文)
2.3 macOS平台安装
2.3.1 使用Homebrew安装
# 安装Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 安装Redis 6
brew install redis@6# 启动Redis服务
brew services start redis@6# 验证安装
redis-cli ping
2.3.2 源码编译安装
同Linux平台的源码编译安装步骤。
2.4 Docker平台安装
2.4.1 基本安装
# 拉取Redis 6镜像
docker pull redis:6# 运行Redis容器
docker run --name my-redis -p 6379:6379 -d redis:6# 连接到Redis容器
docker exec -it my-redis redis-cli
2.4.2 带自定义配置的安装
# 创建配置目录
mkdir -p /path/to/redis/config /path/to/redis/data# 复制或创建配置文件到/path/to/redis/config/redis.conf# 运行带自定义配置的Redis容器
docker run --name my-redis \-p 6379:6379 \-v /path/to/redis/config/redis.conf:/etc/redis/redis.conf \-v /path/to/redis/data:/data \-d redis:6 redis-server /etc/redis/redis.conf
3. Redis配置文件详解
Redis的主要配置文件为redis.conf
,下面详细解释重要的配置项:
3.1 基础配置
# 绑定主机地址,默认为127.0.0.1,允许所有IP访问设置为0.0.0.0
bind 127.0.0.1 -::1# 端口号,默认6379
port 6379# 是否以守护进程方式运行
# yes: 后台运行
# no: 前台运行
daemonize yes# 守护进程模式下,Redis会把pid写入到这个文件
daemonize yes
pidfile /var/run/redis/redis-server.pid# 日志级别,可选:debug, verbose, notice, warning
loglevel notice# 日志文件路径,默认为标准输出
logfile /var/log/redis/redis-server.log# 数据库数量,默认16个
databases 16
3.2 安全配置
# 设置Redis密码
requirepass your_secure_password# 重命名危险命令
# 将FLUSHDB命令重命名为一个复杂的名称
dbfilename dump.rdb# 设置主从复制的认证密码
masterauth your_master_password# 默认保护模式,限制为本地访问
protected-mode yes
3.3 持久化配置
3.3.1 RDB持久化
# 启用RDB持久化
# save <秒> <修改次数>,满足条件时自动保存快照
save 900 1 # 900秒内至少1个键被修改
save 300 10 # 300秒内至少10个键被修改
save 60 10000 # 60秒内至少10000个键被修改# RDB文件名
dbfilename dump.rdb# RDB文件存储路径
dir /var/lib/redis# 是否在没有指定保存规则的情况下阻止写入操作
stop-writes-on-bgsave-error yes# 是否压缩RDB文件
rdbcompression yes# 是否校验RDB文件
rdbchecksum yes
3.3.2 AOF持久化
# 启用AOF持久化
appendonly no# AOF文件名
appendfilename "appendonly.aof"# AOF持久化策略
# appendfsync always # 每次写入都同步,最安全但性能最差
appendfsync everysec # 每秒同步一次,平衡安全和性能
# appendfsync no # 操作系统决定何时同步,性能最好但安全性最差# AOF文件重写时是否继续追加日志
no-appendfsync-on-rewrite no# AOF文件大小增长百分比触发重写
auto-aof-rewrite-percentage 100# AOF文件最小大小触发重写
auto-aof-rewrite-min-size 64mb# 加载AOF文件时如果有错误是否停止
# yes: 停止,no: 忽略错误继续加载
aof-load-truncated yes
3.4 内存管理
# 设置最大内存限制
maxmemory <bytes># 内存达到上限时的淘汰策略
# volatile-lru: 从已设置过期时间的数据集中,使用LRU算法淘汰
# allkeys-lru: 从所有数据集中,使用LRU算法淘汰
# volatile-lfu: 从已设置过期时间的数据集中,使用LFU算法淘汰
# allkeys-lfu: 从所有数据集中,使用LFU算法淘汰
# volatile-random: 从已设置过期时间的数据集中随机淘汰
# allkeys-random: 从所有数据集中随机淘汰
# volatile-ttl: 从已设置过期时间的数据集中,淘汰剩余时间最短的
# noeviction: 禁止淘汰数据,达到上限时拒绝写入操作
maxmemory-policy noeviction# 执行淘汰策略时的样本数量
maxmemory-samples 5
3.5 网络配置
# 客户端连接超时时间(秒),0表示永不超时
timeout 0# TCP keepalive设置(秒)
tcp-keepalive 300# 最大客户端连接数
maxclients 10000
3.6 高级配置
# 慢查询日志记录阈值(微秒)
slowlog-log-slower-than 10000# 慢查询日志最大条目数
slowlog-max-len 128# 哈希表最大负载因子
hash-max-ziplist-entries 512
hash-max-ziplist-value 64# 列表压缩阈值
list-max-ziplist-size -2# 集合压缩阈值
set-max-intset-entries 512# 有序集合压缩阈值
zset-max-ziplist-entries 128
zset-max-ziplist-value 64# 启用懒free功能
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
4. 多平台配置示例
4.1 Windows平台配置示例
# redis.windows.conf 示例# 绑定地址
bind 127.0.0.1# 端口
port 6379# 以服务方式运行
# 注意:Windows下此参数与Linux不同
# 在Windows中,作为服务运行时会自动以后台方式运行# 日志配置
loglevel notice
logfile "redis.log"# 持久化配置
save 900 1
save 300 10
save 60 10000
dbfilename "dump.rdb"
dir "C:\\Redis\\data"# AOF配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec# 内存配置
maxmemory 2gb
maxmemory-policy volatile-lru# 安全配置
requirepass YourSecurePassword123
4.2 Linux平台配置示例
# redis.conf 示例# 绑定地址 - 生产环境推荐指定IP,开发环境可设为0.0.0.0
bind 0.0.0.0# 端口
port 6379# 守护进程模式
daemonize yes
pidfile /var/run/redis/redis-server.pid# 日志配置
loglevel notice
logfile /var/log/redis/redis-server.log# 持久化配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis# AOF配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 内存配置
maxmemory 4gb
maxmemory-policy allkeys-lru# 安全配置
requirepass SecurePassword456# 客户端配置
tcp-keepalive 60
maxclients 5000
4.3 Docker平台配置示例
# docker-redis.conf 示例# 绑定地址 - Docker环境通常设为0.0.0.0
bind 0.0.0.0# 端口
port 6379# 禁用守护进程模式(Docker容器中通常不需要)
daemonize no# 持久化配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data# AOF配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec# 内存配置
maxmemory 1gb
maxmemory-policy volatile-lru# 安全配置
requirepass DockerRedisPassword789# 容器特定配置
# 允许在没有磁盘访问权限的情况下运行
overcommit_memory 1# 禁用THP(透明大页)
# 注意:这需要在Docker主机上设置,或通过sysctl参数传递
5. Redis服务管理
5.1 Windows平台服务管理
# 启动Redis服务
redis-server --service-start# 停止Redis服务
redis-server --service-stop# 卸载Redis服务
redis-server --service-uninstall# 重启Redis服务
redis-server --service-stop && redis-server --service-start
5.2 Linux平台服务管理
# 启动Redis服务
sudo systemctl start redis-server# 停止Redis服务
sudo systemctl stop redis-server# 重启Redis服务
sudo systemctl restart redis-server# 查看Redis服务状态
sudo systemctl status redis-server# 设置开机自启
sudo systemctl enable redis-server# 禁用开机自启
sudo systemctl disable redis-server
5.3 macOS平台服务管理
# 启动Redis服务
brew services start redis@6# 停止Redis服务
brew services stop redis@6# 重启Redis服务
brew services restart redis@6# 查看服务状态
brew services list
5.4 Docker平台服务管理
# 启动Redis容器
docker start my-redis# 停止Redis容器
docker stop my-redis# 重启Redis容器
docker restart my-redis# 查看容器状态
docker ps -a | grep redis# 查看容器日志
docker logs my-redis# 进入容器
docker exec -it my-redis /bin/bash
6. 验证安装
无论在哪个平台,都可以使用以下命令验证Redis是否正常运行:
# 连接到Redis服务器
redis-cli# 验证连接
127.0.0.1:6379> PING
PONG# 如果设置了密码,需要先认证
127.0.0.1:6379> AUTH your_password
OK# 查看Redis信息
127.0.0.1:6379> INFO
# 输出Redis版本、内存使用等信息
7. 常见问题与解决方案
7.1 连接问题
- 问题:无法远程连接Redis服务器
解决方案:- 检查
bind
配置是否允许远程IP访问 - 确保
protected-mode
设置正确 - 检查防火墙是否开放了6379端口
- 确认
requirepass
密码是否正确
- 检查
7.2 内存问题
- 问题:Redis内存使用过高
解决方案:- 配置合适的
maxmemory
值 - 选择合适的
maxmemory-policy
淘汰策略 - 定期清理不需要的数据
- 使用Redis集群扩展内存
- 配置合适的
7.3 持久化问题
-
问题:AOF文件过大
解决方案:- 配置
auto-aof-rewrite-percentage
和auto-aof-rewrite-min-size
参数 - 手动执行
BGREWRITEAOF
命令重写AOF文件
- 配置
-
问题:重启后数据丢失
解决方案:- 同时启用RDB和AOF持久化
- 检查持久化配置是否正确
- 验证数据目录权限是否足够
7.4 Docker特定问题
- 问题:Docker容器重启后数据丢失
解决方案:- 使用数据卷挂载持久化目录
- 确保挂载路径权限正确
- 考虑使用Docker的数据管理功能
8. 性能优化建议
- 根据实际需求调整
maxmemory
和maxmemory-policy
- 合理配置持久化策略,权衡数据安全和性能
- 对于高并发场景,考虑使用Redis集群
- 避免在Redis中存储大型数据,尽量保持数据精简
- 使用管道(pipeline)批量处理命令,减少网络开销
- 定期监控Redis性能指标,及时发现并解决问题
- 考虑使用Redis Sentinel实现高可用性
9. 附录
9.1 Redis 6新特性
Redis 6引入了许多重要的新特性:
- 多线程I/O:提高了网络I/O性能
- 客户端缓存:支持客户端缓存,减少网络请求
- 访问控制列表(ACL):提供更细粒度的权限控制
- RESP3协议:新的Redis序列化协议,支持更多数据类型
- SSL支持:原生支持SSL/TLS加密
- Redis Cluster代理:内置集群代理功能
9.2 资源链接
- Redis官方网站
- Redis文档
- Redis GitHub仓库
- Redis中文文档