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

发布于:2025-09-08 ⋅ 阅读:(24) ⋅ 点赞:(0)

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

目录

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

ps:当前最流行,使用较广的Redis 版本是6.x。本文也是基于这个版本。

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 资源链接


网站公告

今日签到

点亮在社区的每一天
去签到