Redis 从入门到精通:全平台安装与性能优化配置指南

Redis 从入门到精通:全平台安装与性能优化配置指南

目录

  1. 概述
  2. 平台安装指南
  3. Redis配置文件详解
  4. 多平台配置示例
  5. Redis服务管理
  6. 验证安装
  7. 常见问题与解决方案
  8. 性能优化建议
  9. 附录

1. 概述

Redis 6是一个开源的内存数据结构存储系统,可用作数据库、缓存和消息代理。本文档详细介绍Redis 6在不同操作系统平台上的安装方法及配置项说明。

2. 平台安装指南

2.1 Windows平台安装

2.1.1 使用MSI安装包(推荐)

  1. 访问Redis官方下载页面
  2. 下载最新的Redis 6.x MSI安装包
  3. 双击安装包,按照向导完成安装
  4. 选择是否将Redis作为Windows服务启动

2.1.2 使用压缩包安装

  1. 下载Redis 6.x的ZIP压缩包
  2. 解压到指定目录,如C:\Redis
  3. 打开命令提示符(管理员权限)
  4. 进入Redis目录并运行以下命令启动Redis:
    redis-server.exe redis.windows.conf
    
  5. 将Redis注册为Windows服务:
    redis-server --service-install redis.windows.conf --loglevel verbose
    
  6. 启动服务:
    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.gz

tar 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服务器
    解决方案
    1. 检查bind配置是否允许远程IP访问
    2. 确保protected-mode设置正确
    3. 检查防火墙是否开放了6379端口
    4. 确认requirepass密码是否正确

7.2 内存问题

  • 问题:Redis内存使用过高
    解决方案
    1. 配置合适的maxmemory
    2. 选择合适的maxmemory-policy淘汰策略
    3. 定期清理不需要的数据
    4. 使用Redis集群扩展内存

7.3 持久化问题

  • 问题:AOF文件过大
    解决方案

    1. 配置auto-aof-rewrite-percentageauto-aof-rewrite-min-size参数
    2. 手动执行BGREWRITEAOF命令重写AOF文件
  • 问题:重启后数据丢失
    解决方案

    1. 同时启用RDB和AOF持久化
    2. 检查持久化配置是否正确
    3. 验证数据目录权限是否足够

7.4 Docker特定问题

  • 问题:Docker容器重启后数据丢失
    解决方案
    1. 使用数据卷挂载持久化目录
    2. 确保挂载路径权限正确
    3. 考虑使用Docker的数据管理功能

8. 性能优化建议

  1. 根据实际需求调整maxmemorymaxmemory-policy
  2. 合理配置持久化策略,权衡数据安全和性能
  3. 对于高并发场景,考虑使用Redis集群
  4. 避免在Redis中存储大型数据,尽量保持数据精简
  5. 使用管道(pipeline)批量处理命令,减少网络开销
  6. 定期监控Redis性能指标,及时发现并解决问题
  7. 考虑使用Redis Sentinel实现高可用性

9. 附录

9.1 Redis 6新特性

Redis 6引入了许多重要的新特性:

  1. 多线程I/O:提高了网络I/O性能
  2. 客户端缓存:支持客户端缓存,减少网络请求
  3. 访问控制列表(ACL):提供更细粒度的权限控制
  4. RESP3协议:新的Redis序列化协议,支持更多数据类型
  5. SSL支持:原生支持SSL/TLS加密
  6. Redis Cluster代理:内置集群代理功能

9.2 资源链接

posted @ 2025-09-07 16:49  昵称是老杨  阅读(68)  评论(0)    收藏  举报