Redis (Remote Dictionary Server) 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,并提供丰富的操作命令。
在安装 Redis 之前,请确保您的系统满足以下要求:
安装编译 Redis 所需的工具和库:
sudo apt update
sudo apt install build-essential tcl
sudo yum groupinstall "Development Tools"
sudo yum install tcl
# 下载最新稳定版
wget https://download.redis.io/redis-stable.tar.gz
# 解压
tar xzf redis-stable.tar.gz
cd redis-stable
# 编译
make
# 测试编译结果 (可选)
make test
# 安装到系统目录
sudo make install
创建 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
创建 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
# 安装 Homebrew (如果尚未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 Redis
brew install redis
临时启动 Redis 服务器:
redis-server
作为后台服务启动:
brew services start redis
检查服务状态:
brew services list
Redis 配置文件位于:
/usr/local/etc/redis.conf
编辑配置文件:
nano /usr/local/etc/redis.conf
从以下地址下载最新版本:
https://github.com/microsoftarchive/redis/releases
下载 .msi 安装程序或 .zip 压缩包
使用 .msi 安装程序:
使用 .zip 压缩包:
redis-server --service-install redis.windows.conf --loglevel verbose
# 启动服务
redis-server --service-start
# 停止服务
redis-server --service-stop
# 卸载服务
redis-server --service-uninstall
Redis 配置文件位于安装目录下的 redis.windows.conf
docker pull 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
从容器内部连接:
docker exec -it my-redis redis-cli
从外部连接:
redis-cli -h localhost -p 6379
以下是 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 |
Redis 提供两种持久化方式:RDB 和 AOF
# 启用 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
appendonly yes
# AOF 文件名
appendfilename "appendonly.aof"
# AOF 同步策略
appendfsync everysec # 每秒同步一次,性能和安全性折中
# AOF 重写策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
保护 Redis 实例的安全设置:
# 在配置文件中设置
requirepass yourstrongpassword
# 或者运行时设置
CONFIG SET requirepass "yourstrongpassword"
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG "CONFIG-SECURE"
bind 127.0.0.1
# 本地连接
redis-cli
# 带密码连接
redis-cli -a yourpassword
# 指定主机和端口
redis-cli -h hostname -p port -a password
# 设置键值
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
# 查看服务器信息
INFO
# 查看内存信息
INFO memory
# 查看客户端连接
CLIENT LIST
# 关闭服务器
SHUTDOWN
# 保存数据到磁盘 (同步)
SAVE
# 后台保存数据到磁盘
BGSAVE
# 查看所有键 (生产环境慎用)
KEYS *
配置 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
提高 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表示不超时
监控 Redis 实例:
# 实时监控命令
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