第二章:安装与配置

在各种平台上安装和配置 Redis,包括 Docker、Linux 和 Windows。

最后更新: 2024-01-15
页面目录

Redis 安装与配置

本章详细介绍 Redis 在不同平台上的安装方法和配置选项。

系统要求

硬件要求

配置 最低要求 推荐配置
CPU 1 核 2+ 核
内存 512 MB 4+ GB
磁盘 1 GB 10+ GB
操作系统 Linux/Windows/macOS Linux

软件要求

  • GCC 编译器:Redis 使用 C 语言编写,需要 GCC 编译
  • Make 工具:用于编译
  • Tcl:用于运行测试

Docker 安装(推荐)

快速启动

# 拉取并运行 Redis
docker run -d \
  --name redis \
  -p 6379:6379 \
  redis:latest \
  redis-server --appendonly yes

# 验证运行
docker exec redis redis-cli ping

Docker Compose 方式

创建 docker-compose.yml

version: '3.8'
services:
  redis:
    image: redis:7-alpine
    container_name: redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
      - ./redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
    environment:
      - REDIS_PASSWORD=your_password
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "your_password", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3

volumes:
  redis_data:

启动服务:

docker-compose up -d

# 连接 Redis
docker exec -it redis redis-cli -a your_password

Linux 安装

方式一:包管理器安装

Ubuntu / Debian

# 更新软件源
sudo apt update

# 安装 Redis
sudo apt install -y redis-server

# 启动 Redis
sudo systemctl start redis-server
sudo systemctl enable redis-server

# 验证安装
redis-cli ping

CentOS / RHEL / Fedora

# 安装 EPEL
sudo yum install -y epel-release

# 安装 Redis
sudo yum install -y redis

# 启动 Redis
sudo systemctl start redis
sudo systemctl enable redis

# 验证安装
redis-cli ping

方式二:源码编译安装

# 安装编译依赖
sudo apt install -y build-essential tcl

# 下载 Redis 源码
cd /tmp
wget https://github.com/redis/redis/archive/7.2.4.tar.gz
tar xzf 7.2.4.tar.gz
cd redis-7.2.4

# 编译安装
make -j$(nproc)
make test  # 可选:运行测试
sudo make install

# 创建配置目录
sudo mkdir -p /etc/redis
sudo cp redis.conf /etc/redis/

# 创建 Redis 用户
sudo useradd -r -s /sbin/nologin redis

# 创建数据目录
sudo mkdir -p /var/lib/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 750 /var/lib/redis

macOS 安装

方式一:Homebrew

# 安装 Redis
brew install redis

# 启动 Redis
brew services start redis

# 验证安装
redis-cli ping

方式二:编译安装

# 安装依赖
brew install build-essential tcl

# 下载编译(与 Linux 相同)

Windows 安装

Windows 不官方支持 Redis,但可以使用 WSL 或第三方移植版:

使用 WSL

# 在 WSL 中安装(推荐)
wsl --install
# 选择 Ubuntu

# 然后按照 Linux 安装步骤进行

使用 Memurai/MSOpenTech Redis

# 下载 MSOpenTech Redis
# https://github.com/microsoftarchive/redis/releases

# 或使用 Memurai(Windows 原生支持)
# https://www.memurai.com/

Redis 配置详解

核心配置文件

# Redis 配置文件位置
# Ubuntu/Debian: /etc/redis/redis.conf
# CentOS: /etc/redis.conf
# 源码安装: /etc/redis/redis.conf

重要配置项

# ===========================================
# 网络配置
# ===========================================

# 绑定 IP 地址(生产环境建议绑定内网 IP)
bind 127.0.0.1 192.168.1.100

# 端口号
port 6379

# TCP 连接队列长度
tcp-backlog 511

# 超时时间(秒),0 表示禁用
timeout 0

# ===========================================
# 通用配置
# ===========================================

# 守护进程运行
daemonize no

# PID 文件
pidfile /var/run/redis/redis-server.pid

# 日志级别:debug, verbose, notice, warning
loglevel notice

# 日志文件
logfile /var/log/redis/redis-server.log

# 数据库数量
databases 16

# ===========================================
# 快照配置(RDB 持久化)
# ===========================================

# 多久执行一次快照,条件触发
save 900 1      # 900秒内至少1个key变化
save 300 10     # 300秒内至少10个key变化
save 60 10000   # 60秒内至少10000个key变化

# 快照失败时停止写入
stop-writes-on-bgsave-error yes

# 是否压缩 RDB 文件
rdbcompression yes

# 是否校验 RDB 文件
rdbchecksum yes

# RDB 文件名
dbfilename dump.rdb

# RDB 文件目录
dir /var/lib/redis

# ===========================================
# 复制配置
# ===========================================

# 主从复制配置
# replicaof <masterip> <masterport>

# 主节点密码(如果有)
# masterauth <master-password>

# 当主节点不可用时,从节点是否继续响应读请求
replica-serve-stale-data yes

# 从节点是否只读
replica-read-only yes

# ===========================================
# 安全配置
# ===========================================

# 设置密码
requirepass your_password_here

# 命令重命名(增加安全性)
# rename-command CONFIG b840fc02d524045429341cc3e480787fac704bfa
# rename-command FLUSHALL ""

# ===========================================
# 内存配置
# ===========================================

# 最大内存(建议设置,防止内存耗尽)
maxmemory 2gb

# 内存淘汰策略
# noeviction: 不淘汰,返回错误
# allkeys-lru: 淘汰所有键中最久未使用的
# volatile-lru: 淘汰设置了过期时间的最久未使用
# allkeys-random: 随机淘汰所有键
# volatile-random: 随机淘汰设置了过期时间的键
# volatile-ttl: 淘汰即将过期的键
# allkeys-lfu: 淘汰使用频率最低的键
# volatile-lfu: 淘汰设置了过期时间中使用频率最低的键
maxmemory-policy allkeys-lru

# ===========================================
# AOF 持久化配置
# ===========================================

# 是否启用 AOF
appendonly no

# AOF 文件名
appendfilename "appendonly.aof"

# AOF 同步策略
# always: 每次写操作同步
# everysec: 每秒同步(推荐)
# no: 由操作系统决定何时同步
appendfsync everysec

# 重写时是否同步
no-appendfsync-on-rewrite no

# 自动重写百分比
auto-aof-rewrite-percentage 100

# 自动重写最小大小
auto-aof-rewrite-min-size 64mb

# ===========================================
# 慢查询日志
# ===========================================

# 记录超过多少微秒的命令
slowlog-log-slower-than 10000

# 最多记录多少条
slowlog-max-len 128

Redis 命令行客户端

基本命令

# 连接 Redis
redis-cli

# 指定主机和端口
redis-cli -h 192.168.1.100 -p 6379

# 带密码连接
redis-cli -a your_password

# 执行单个命令
redis-cli SET key value
redis-cli GET key

# 验证连接
redis-cli ping
# 返回: PONG

# 选择数据库(默认 0-15)
redis-cli SELECT 1

# 查看所有键
redis-cli KEYS "*"

# 查看键的数量
redis-cli DBSIZE

# 查看服务器信息
redis-cli INFO

# 查看慢查询日志
redis-cli SLOWLOG GET

批量操作

# 从文件执行命令
redis-cli --pipe < commands.txt

# 批量插入示例
cat > commands.txt << EOF
SET key1 value1
SET key2 value2
HSET user:1001 name "张三" age 25
EOF

redis-cli --pipe < commands.txt

启动和停止

systemd 服务配置

# /etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
PIDFile=/var/run/redis/redis-server.pid
Restart=always
RestartSec=3

User=redis
Group=redis

[Install]
WantedBy=multi-user.target
# 重新加载 systemd
sudo systemctl daemon-reload

# 启动 Redis
sudo systemctl start redis

# 设置开机自启
sudo systemctl enable redis

# 查看状态
sudo systemctl status redis

生产环境配置建议

# 生产环境推荐配置
daemonize no
bind 127.0.0.1
protected-mode yes
port 6379
timeout 0
tcp-keepalive 300

# 内存设置
maxmemory 4gb
maxmemory-policy allkeys-lru

# 持久化设置
save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes

# AOF 设置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 安全设置
requirepass your_strong_password
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""

# 日志
loglevel notice
logfile /var/log/redis/redis.log

# 慢查询
slowlog-log-slower-than 10000
slowlog-max-len 128

卸载 Redis

# Ubuntu/Debian
sudo apt purge redis-server

# CentOS
sudo yum remove redis

# 清理配置和数据
sudo rm -rf /var/lib/redis
sudo rm -rf /etc/redis
sudo rm -rf /var/log/redis

下一步

现在您已经掌握了 Redis 的安装和配置。接下来让我们深入学习 Redis 的数据类型。

👉 数据类型详解