Redis 安装与使用指南

本文是一份面向 Debian / Ubuntu 的 Redis 实战指南,重点讲清楚如何安装、启动、连接、配置、持久化、复制、哨兵、高可用思路,以及常见排障。它适合缓存、会话、队列、限流、分布式锁和轻量数据存储场景。

适用场景

  • Web 缓存
  • Session 存储
  • 消息队列或任务缓冲
  • 分布式锁
  • 排行榜、计数器、热点数据
  • 需要高性能键值存储的场景

Redis 是什么

Redis 是一个内存型数据结构存储系统,支持多种数据结构,例如:

  • string
  • hash
  • list
  • set
  • sorted set
  • stream

Redis 的特点是:

  • 读写快
  • 结构简单
  • 适合做缓存和高频访问数据
  • 可以通过持久化和复制增强可靠性

安装前准备

先更新软件包索引:

sudo apt update

确认你想使用:

  • Debian 仓库版本
  • 还是 Redis 官方仓库版本

如果你希望版本更接近上游,建议用官方仓库。

安装 Redis

方式一:Debian 仓库

sudo apt install -y redis-server redis-tools

方式二:Redis 官方仓库

官方文档推荐通过其 APT 仓库安装:

sudo apt-get install lsb-release curl gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis

启动服务并设置开机自启

sudo systemctl enable redis-server
sudo systemctl start redis-server

查看状态:

sudo systemctl status redis-server

如果你安装的是官方包,服务名可能略有不同。先用 systemctl list-units --type=service | grep redis 确认。

连接 Redis

命令行客户端

redis-cli

指定主机和端口:

redis-cli -h 127.0.0.1 -p 6379

认证后连接:

redis-cli -a your_password

常用测试命令

PING
SET hello world
GET hello
DEL hello

正常情况下,PING 应返回:

PONG

基本数据类型

String

最常见类型,适合缓存和计数。

SET user:1:name Alice
GET user:1:name
INCR counter:views

Hash

适合对象型数据。

HSET user:1 name Alice age 18
HGET user:1 name
HGETALL user:1

List

适合队列和消息缓冲。

LPUSH jobs task1
RPUSH jobs task2
LPOP jobs

Set

适合去重。

SADD tags redis php linux
SMEMBERS tags

Sorted Set

适合排行榜。

ZADD rank 100 alice 200 bob
ZRANGE rank 0 -1 WITHSCORES

常用 CLI 命令

redis-cli INFO
redis-cli CLIENT LIST
redis-cli DBSIZE
redis-cli KEYS '*'
redis-cli SCAN 0
redis-cli TTL mykey
redis-cli EXPIRE mykey 60

注意:

  • KEYS * 在大库上不推荐
  • 生产环境优先用 SCAN

配置文件

常见配置文件位置:

/etc/redis/redis.conf

官方仓库版本的位置可能有所不同,以实际安装为准。

常见关键配置项

bind 127.0.0.1
port 6379
protected-mode yes
timeout 0
tcp-keepalive 300
daemonize no
supervised systemd
dir /var/lib/redis

网络访问

仅本机访问

默认建议只监听本机:

bind 127.0.0.1
protected-mode yes

允许远程访问

如果你必须远程连接,要同时考虑:

  • bind
  • 密码/ACL
  • 防火墙
  • 云安全组

不要直接把 Redis 暴露到公网。

认证与 ACL

Redis 早期常用 requirepass,较新版本支持更灵活的 ACL。

简单密码

requirepass StrongPasswordHere

ACL 基本思路

你可以为不同用途创建不同用户,并限制命令和 key 范围。


例子:

ACL SETUSER app on >StrongPasswordHere ~app:* +@all
ACL LIST

建议:

  • 生产环境优先考虑 ACL
  • 不要给应用过大的权限

持久化

Redis 官方文档说明了几种持久化方式:

  • RDB:快照
  • AOF:追加日志
  • RDB + AOF:同时使用
  • 也可以完全不持久化,用于纯缓存

RDB

RDB 是定时快照,适合备份和快速恢复。


常见配置:

save 900 1
save 300 10
save 60 10000

AOF

AOF 会记录写命令,更适合降低数据丢失窗口。


常见配置:

appendonly yes
appendfsync everysec

选择建议

  • 纯缓存:可以不持久化
  • 需要可恢复的数据:优先 AOF 或 AOF + RDB
  • 需要备份友好:RDB 很有用

备份与恢复

RDB 备份

RDB 文件通常是备份友好的,可以直接拷贝。

导出当前数据

redis-cli SAVE

谨慎使用 SAVE,它会阻塞主线程;生产环境更常用后台快照或 AOF。

恢复

恢复时通常是:

  • 停止 Redis
  • 替换数据文件
  • 启动 Redis

具体取决于你用的是 RDB 还是 AOF。

复制

Redis 复制采用主从模型,副本会从主库同步数据。

基本概念

  • master:主节点
  • replica:副本节点

配置副本

replicaof 127.0.0.1 6379

如果主库有密码,副本也要配置认证参数。

常见用途

  • 读写分离
  • 数据冗余
  • 故障切换基础

Sentinel

Redis Sentinel 用于非集群模式下的高可用。


它的主要能力:

  • 监控
  • 通知
  • 自动故障转移
  • 作为客户端配置提供者

常见场景:

  • 1 主多副本
  • 需要主故障自动切换

注意:

  • Sentinel 不能替代你的应用容错设计
  • 复制是异步的,确认写入不等于绝对不丢数据

性能与内存

查看内存

redis-cli INFO memory

内存策略

常见配置:

maxmemory 512mb
maxmemory-policy allkeys-lru

常见淘汰策略:

  • noeviction
  • allkeys-lru
  • volatile-lru
  • allkeys-random
  • volatile-ttl

建议

  • 缓存场景要设置 maxmemory
  • 明确数据淘汰策略
  • 监控命中率和内存占用

常用排障

1. 连不上

检查:

  • 服务是否启动
  • 端口是否监听
  • bind 是否限制在本机
  • 防火墙是否拦截

2. 认证失败

检查:

  • requirepass
  • ACL 用户名和密码
  • 应用连接串

3. 数据丢失

检查:

  • 是否开启持久化
  • 持久化策略是否满足业务要求
  • 是否发生了意外重启

4. 内存飙升

检查:

  • key 是否过多
  • value 是否过大
  • 是否设置了过期时间
  • 是否需要内存淘汰策略

5. 慢或阻塞

检查:

  • 是否使用了 KEYS
  • 是否执行了大范围阻塞命令
  • 持久化 fork 是否占用过高

安全建议

  • 默认只允许本机访问
  • 一定要设置密码或 ACL
  • 不要把 Redis 暴露到公网
  • 不要使用危险命令随便操作生产库
  • 给缓存和业务数据分开设计

常见危险命令

生产环境要谨慎:

  • FLUSHALL
  • FLUSHDB
  • KEYS
  • SAVE
  • CONFIG SET

最小可用流程

如果你只想快速装一个可用 Redis:

sudo apt update
sudo apt install -y redis-server redis-tools
sudo systemctl enable redis-server
sudo systemctl start redis-server
redis-cli PING

如果你要做成生产可用,还要继续补:

  • 密码或 ACL
  • 持久化
  • 复制或 Sentinel
  • 防火墙

结论

Redis 真正好用的核心不是“装上就完了”,而是:

  • 选择合适的数据类型
  • 设计好过期和淘汰策略
  • 明确是否需要持久化
  • 控制暴露面和认证
  • 为高可用做好复制和哨兵规划
本文地址: https://www.vvcms.cn/blog/redis-guid
版权所有 © admin 未经授权不得转载