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 版本(简单)
- 下载地址:https://github.com/microsoftarchive/redis/releases
- 下载
Redis-x64-3.2.100.msi
安装包 - 双击安装,默认会安装服务并启动
- 打开命令行测试:
返回redis-cli ping
PONG
表示成功。
方法二:使用 WSL(推荐用于开发)
# 安装 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 为例)
# 更新包管理器
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:
brew install redis
brew services start redis
redis-cli
📌 四、Redis 基础命令实战
启动 redis-cli
后,即可执行以下命令。
4.1 键(Key)操作
# 设置键值
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)类型
# 自增(常用于计数器)
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)类型(适合对象存储)
# 存储用户信息
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)类型(可用于消息队列)
# 从右侧插入
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)类型(无序不重复)
# 添加元素
SADD tags java python java # 重复元素只存一次
(integer) 2# 查看所有元素
SMEMBERS tags
1) "python"
2) "java"# 判断是否包含
SISMEMBER tags java
(integer) 1
4.6 有序集合(ZSet)类型(带权重的集合)
# 添加成员(分数为权重)
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/GET 、HSET/HGET 、LPUSH/LPOP 、ZADD/ZRANGE 等 |
学习建议 | 先掌握 String 和 Hash,再深入 List/ZSet 等结构 |
📚 推荐
- Redis 官方文档(中文)
- CSDN Redis 专栏