Redis 安装与配置指南

高性能的键值存储数据库

Redis 简介

Redis (Remote Dictionary Server) 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,并提供丰富的操作命令。

主要特性

  • 内存存储,读写性能极高
  • 支持数据持久化 (RDB/AOF)
  • 支持多种数据结构
  • 支持主从复制
  • 支持事务
  • 支持Lua脚本
  • 支持发布/订阅模式

使用场景

  • 缓存系统
  • 会话缓存
  • 排行榜/计数器
  • 消息队列
  • 实时系统
  • 地理位置应用

安装 Redis

Linux
macOS
Windows
Docker
1 系统要求

在安装 Redis 之前,请确保您的系统满足以下要求:

  • 内存: 至少 1GB,推荐 4GB+
  • 磁盘空间: 至少 100MB,持久化需要更多空间
  • GCC: 编译 Redis 需要 GCC 编译器
2 安装依赖

安装编译 Redis 所需的工具和库:

Ubuntu/Debian:

sudo apt update
sudo apt install build-essential tcl

CentOS/RHEL:

sudo yum groupinstall "Development Tools"
sudo yum install tcl
3 下载并编译 Redis
# 下载最新稳定版
wget https://download.redis.io/redis-stable.tar.gz

# 解压
tar xzf redis-stable.tar.gz
cd redis-stable

# 编译
make

# 测试编译结果 (可选)
make test

# 安装到系统目录
sudo make install
注意: 编译过程可能需要几分钟时间,取决于您的系统性能。
4 配置 Redis 服务

创建 Redis 配置目录并复制配置文件:

sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/redis.conf

编辑配置文件:

sudo nano /etc/redis/redis.conf

建议修改以下配置:

# 允许后台运行
daemonize yes

# 设置日志文件路径
logfile "/var/log/redis/redis.log"

# 设置数据目录
dir /var/lib/redis

# 设置最大内存 (根据实际情况调整)
maxmemory 2gb
maxmemory-policy allkeys-lru
5 创建系统服务

创建 Redis 系统服务文件:

sudo nano /etc/systemd/system/redis.service

添加以下内容:

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

创建 Redis 用户和所需目录:

sudo adduser --system --group --no-create-home redis
sudo mkdir /var/lib/redis
sudo mkdir /var/log/redis
sudo chown redis:redis /var/lib/redis
sudo chown redis:redis /var/log/redis
sudo chmod 770 /var/lib/redis
sudo chmod 775 /var/log/redis

启用并启动 Redis 服务:

sudo systemctl daemon-reload
sudo systemctl enable redis
sudo systemctl start redis

检查服务状态:

sudo systemctl status redis
1 使用 Homebrew 安装
# 安装 Homebrew (如果尚未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装 Redis
brew install redis
2 启动 Redis

临时启动 Redis 服务器:

redis-server

作为后台服务启动:

brew services start redis

检查服务状态:

brew services list
3 配置文件位置

Redis 配置文件位于:

/usr/local/etc/redis.conf

编辑配置文件:

nano /usr/local/etc/redis.conf
注意: Redis 官方不支持 Windows,但 Microsoft 维护了一个 Windows 版本。
1 下载 Windows 版 Redis

从以下地址下载最新版本:

https://github.com/microsoftarchive/redis/releases

下载 .msi 安装程序或 .zip 压缩包

2 安装 Redis

使用 .msi 安装程序:

  1. 双击下载的 .msi 文件
  2. 按照向导完成安装
  3. 安装程序会自动将 Redis 添加为 Windows 服务

使用 .zip 压缩包:

  1. 解压下载的 .zip 文件
  2. 打开命令提示符 (管理员权限)
  3. 导航到解压目录
  4. 运行以下命令安装服务:
    redis-server --service-install redis.windows.conf --loglevel verbose
3 启动 Redis 服务
# 启动服务
redis-server --service-start

# 停止服务
redis-server --service-stop

# 卸载服务
redis-server --service-uninstall
4 配置文件

Redis 配置文件位于安装目录下的 redis.windows.conf

1 拉取 Redis 镜像
docker pull redis
2 运行 Redis 容器

基本运行:

docker run --name my-redis -d redis

带持久化:

docker run --name my-redis -d \
  -v /path/to/redis/data:/data \
  redis redis-server --appendonly yes

自定义配置:

docker run --name my-redis -d \
  -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf \
  redis redis-server /usr/local/etc/redis/redis.conf

指定端口:

docker run --name my-redis -d \
  -p 6379:6379 \
  redis
3 连接 Redis

从容器内部连接:

docker exec -it my-redis redis-cli

从外部连接:

redis-cli -h localhost -p 6379

Redis 基本配置

1 重要配置参数

以下是 Redis 配置文件中一些重要的参数:

参数 说明 示例值
port 监听端口 6379
bind 绑定IP地址 127.0.0.1
daemonize 是否以守护进程运行 yes
dir 工作目录 /var/lib/redis
logfile 日志文件路径 /var/log/redis/redis.log
maxmemory 最大内存限制 2gb
maxmemory-policy 内存满时的策略 allkeys-lru
requirepass 认证密码 yourpassword
2 持久化配置

Redis 提供两种持久化方式:RDB 和 AOF

RDB (快照):

# 启用 RDB
save 900 1      # 900秒(15分钟)内有至少1个key变化则保存
save 300 10     # 300秒(5分钟)内有至少10个key变化则保存
save 60 10000   # 60秒内有至少10000个key变化则保存

# RDB 文件名
dbfilename dump.rdb

# 工作目录 (RDB文件保存位置)
dir /var/lib/redis

AOF (追加日志):

# 启用 AOF
appendonly yes

# AOF 文件名
appendfilename "appendonly.aof"

# AOF 同步策略
appendfsync everysec  # 每秒同步一次,性能和安全性折中

# AOF 重写策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
建议: 生产环境中可以同时启用 RDB 和 AOF,以获得更好的数据安全性。
3 安全配置

保护 Redis 实例的安全设置:

设置密码:

# 在配置文件中设置
requirepass yourstrongpassword

# 或者运行时设置
CONFIG SET requirepass "yourstrongpassword"

重命名危险命令:

rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG "CONFIG-SECURE"

绑定IP:

bind 127.0.0.1
安全警告: 不要将 Redis 暴露在公共网络中而不设置密码,否则可能导致数据泄露或被攻击者利用。

Redis 基本操作

1 连接 Redis
# 本地连接
redis-cli

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

# 指定主机和端口
redis-cli -h hostname -p port -a password
2 基本命令

键操作:

# 设置键值
SET key value

# 获取键值
GET key

# 检查键是否存在
EXISTS key

# 删除键
DEL key

# 设置过期时间 (秒)
EXPIRE key 60

# 查看剩余生存时间
TTL key

哈希操作:

# 设置哈希字段
HSET user:1000 name "John" age 30

# 获取哈希字段
HGET user:1000 name

# 获取所有字段
HGETALL user:1000

列表操作:

# 从左侧推入元素
LPUSH mylist "world"
LPUSH mylist "hello"

# 获取列表范围
LRANGE mylist 0 -1

# 从右侧弹出元素
RPOP mylist
3 服务器管理命令
# 查看服务器信息
INFO

# 查看内存信息
INFO memory

# 查看客户端连接
CLIENT LIST

# 关闭服务器
SHUTDOWN

# 保存数据到磁盘 (同步)
SAVE

# 后台保存数据到磁盘
BGSAVE

# 查看所有键 (生产环境慎用)
KEYS *

Redis 高级配置

1 主从复制

配置 Redis 主从复制:

主服务器配置 (通常无需修改):

# 确保主服务器可以接受连接
# bind 127.0.0.1  # 注释掉或添加从服务器IP
# protected-mode no  # 如果使用密码可以保持yes

从服务器配置:

# 指定主服务器
replicaof master-ip 6379

# 如果主服务器有密码
masterauth yourpassword

# 设置为只读
replica-read-only yes

启动后检查复制状态:

redis-cli INFO replication
2 性能优化

提高 Redis 性能的建议:

内存优化:

# 使用适当的数据类型
# 小哈希使用 ziplist 编码
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

# 小列表使用 ziplist 编码
list-max-ziplist-size -2

# 小集合使用 intset 编码
set-max-intset-entries 512

网络优化:

# 提高TCP backlog
tcp-backlog 511

# 启用TCP keepalive
tcp-keepalive 300

客户端优化:

# 限制客户端数量
maxclients 10000

# 客户端超时时间 (毫秒)
timeout 0  # 0表示不超时
3 监控与维护

监控 Redis 实例:

使用 redis-cli 监控:

# 实时监控命令
redis-cli MONITOR

# 统计命令
redis-cli --stat

# 延迟测试
redis-cli --latency

定期维护:

# 手动触发AOF重写
BGREWRITEAOF

# 检查RDB文件完整性
redis-check-rdb /var/lib/redis/dump.rdb

# 检查AOF文件完整性
redis-check-aof /var/lib/redis/appendonly.aof