Redis:是什么、能做什么?

✅ 引言

在现代互联网应用中,Redis 已成为不可或缺的技术组件。无论是高并发的电商系统、社交平台,还是微服务架构中的缓存中间件,Redis 都扮演着至关重要的角色。

本文将带你:

  • 彻底理解 Redis 是什么?能做什么?
  • 在 Windows / Linux / macOS 上成功 安装并运行 Redis
  • 掌握 常用数据类型与基础命令
  • 通过 实战示例 快速上手 Redis

💡 适合初学者入门,也适合作为开发人员的快速参考手册。


📌 一、Redis 是什么?

1.1 定义

Redis (Remote Dictionary Server)是一个开源的、基于内存的 高性能键值对(Key-Value)数据库,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。

它由 Salvatore Sanfilippo(antirez)于 2009 年发布,现由 Redis Ltd. 维护。

1.2 核心特性

特性 说明
高性能 所有数据存储在内存中,读写速度极快(10万+ QPS)
🧩 丰富数据结构 支持 String、Hash、List、Set、ZSet、Bitmap、HyperLogLog 等
🔄 持久化机制 支持 RDB(快照)和 AOF(日志)两种持久化方式
📡 多种用途 缓存、会话存储、消息队列、排行榜、分布式锁等
🌐 网络支持 支持 TCP 协议,提供客户端 API(Java、Python、Node.js 等)

📌 二、Redis 能做什么?(应用场景)

应用场景 使用方式
🔁 缓存 替代数据库查询,提升响应速度(如商品信息、用户资料)
🛒 会话存储(Session) 配合 Spring Session 实现分布式会话共享
📢 消息队列 使用 List 或 Pub/Sub 实现简单的任务队列
🏆 排行榜 使用 ZSet(有序集合)实现积分、热度排行
🔐 分布式锁 使用 SETNX 命令实现跨服务的锁机制
📊 计数器 利用 INCR 命令实现页面浏览量、点赞数统计
🧠 实时推荐 结合 Set 和 ZSet 实现用户兴趣标签匹配

📌 三、安装与运行 Redis

3.1 Windows 安装(推荐使用 WSL 或官方移植版)

⚠️ Redis 官方不支持 Windows,但微软提供了移植版本。

方法一:使用 Microsoft Archive 版本(简单)
  1. 下载地址:https://github.com/microsoftarchive/redis/releases

  2. 下载 Redis-x64-3.2.100.msi 安装包

  3. 双击安装,默认会安装服务并启动

  4. 打开命令行测试:

    bash 复制代码
    redis-cli ping

    返回 PONG 表示成功。

方法二:使用 WSL(推荐用于开发)
bash 复制代码
# 安装 WSL(Ubuntu)
wsl --install -d Ubuntu

# 在 Ubuntu 中安装 Redis
sudo apt update
sudo apt install redis-server

# 启动 Redis 服务
sudo service redis-server start

# 进入客户端
redis-cli

3.2 Linux / macOS 安装(以 Ubuntu 为例)

bash 复制代码
# 更新包管理器
sudo apt update

# 安装 Redis
sudo apt install redis-server

# 启动 Redis 服务
sudo service redis-server start

# 检查状态
sudo service redis-server status

# 进入 Redis 客户端
redis-cli

📌 macOS 用户可使用 Homebrew:

bash 复制代码
brew install redis
brew services start redis
redis-cli

📌 四、Redis 基础命令实战

启动 redis-cli 后,即可执行以下命令。

4.1 键(Key)操作

bash 复制代码
# 设置键值
SET name "Alice"
OK

# 获取键值
GET name
"Alice"

# 判断键是否存在
EXISTS name
(integer) 1

# 设置过期时间(秒)
EXPIRE name 10

# 查看剩余生存时间
TTL name
(integer) 8

# 删除键
DEL name
(integer) 1

4.2 字符串(String)类型

bash 复制代码
# 自增(常用于计数器)
INCR page_view
(integer) 1
INCR page_view
(integer) 2

# 设置带过期时间的字符串
SETEX token 3600 "abc123"

# 批量设置/获取
MSET user:1:name "Bob" user:1:age "25"
MGET user:1:name user:1:age
1) "Bob"
2) "25"

4.3 哈希(Hash)类型(适合对象存储)

bash 复制代码
# 存储用户信息
HSET user:1001 name "张三" age 30 email "zhangsan@example.com"
(integer) 3

# 获取字段
HGET user:1001 name
"张三"

# 获取所有字段
HGETALL user:1001
1) "name"
2) "张三"
3) "age"
4) "30"
5) "email"
6) "zhangsan@example.com"

# 获取所有字段名
HKEYS user:1001
1) "name"
2) "age"
3) "email"

4.4 列表(List)类型(可用于消息队列)

bash 复制代码
# 从右侧插入
RPUSH tasks "send_email"
(integer) 1
RPUSH tasks "generate_report"
(integer) 2

# 从左侧弹出(消费任务)
LPOP tasks
"send_email"

# 查看列表内容
LRANGE tasks 0 -1
1) "generate_report"

4.5 集合(Set)类型(无序不重复)

bash 复制代码
# 添加元素
SADD tags java python java  # 重复元素只存一次
(integer) 2

# 查看所有元素
SMEMBERS tags
1) "python"
2) "java"

# 判断是否包含
SISMEMBER tags java
(integer) 1

4.6 有序集合(ZSet)类型(带权重的集合)

bash 复制代码
# 添加成员(分数为权重)
ZADD leaderboard 100 "Alice"
(integer) 1
ZADD leaderboard 150 "Bob" 90 "Charlie"
(integer) 2

# 按分数倒序排名
ZREVRANGE leaderboard 0 -1 WITHSCORES
1) "Bob"
2) "150"
3) "Alice"
4) "100"
5) "Charlie"
6) "90"

# 获取某成员排名(从高到低)
ZREVRANK leaderboard "Alice"
(integer) 1

📌 五、Redis 可视化工具推荐

为了更方便地管理 Redis 数据,推荐使用以下图形化工具:

工具 说明
🔹 RedisInsight(官方) Redis 官方 GUI 工具,支持数据浏览、监控、分析 下载地址
🔹 Another Redis Desktop Manager 开源、轻量、支持中文,GitHub 高星项目
🔹 QuickRedis 国产优秀工具,界面简洁,功能强大

✅ 总结

内容 要点
Redis 是什么 内存型键值数据库,高性能、多数据结构
主要用途 缓存、Session、消息队列、排行榜、计数器等
安装方式 Windows(移植版/WSL)、Linux/macOS(apt/brew)
核心命令 SET/GETHSET/HGETLPUSH/LPOPZADD/ZRANGE
学习建议 先掌握 String 和 Hash,再深入 List/ZSet 等结构

📚 推荐