当前位置: 首页 > ops >正文

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. 打开命令行测试:
    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/GETHSET/HGETLPUSH/LPOPZADD/ZRANGE
学习建议先掌握 String 和 Hash,再深入 List/ZSet 等结构

📚 推荐

  • Redis 官方文档(中文)
  • CSDN Redis 专栏
http://www.xdnf.cn/news/17632.html

相关文章:

  • 第十三节:后期处理:效果增强
  • MySQL优化常用的几个方法
  • 使用 Python Selenium 和 Requests 实现歌曲网站批量下载实战
  • 100、【OS】【Nuttx】【构建】cmake 配置保存
  • 文心4.5专家负载均衡机制深度解析
  • 【Virtual Globe 渲染技术笔记】4 椭球面上的曲线
  • 线上Linux服务器被植入各种病毒的详细分析、处理、加固流程
  • 机器学习之TF-IDF文本关键词提取
  • EP1S20F484C6 Altera Stratix FPGA
  • imx6ull-驱动开发篇19——linux信号量实验
  • 鸿蒙开发资源导航与学习建议
  • 如何解决Unexpected token ‘<’, “<!doctype “… is not valid JSON 报错问题
  • 微服务ETCD服务注册和发现
  • LeetCode 2787.将一个数字表示成幂的和的方案数:经典01背包
  • Airtable 入门指南:从创建项目到基础数据分析与可视化
  • 渗透测试现已成为 CISO 战略的核心
  • 开疆智能Ethernet转ModbusTCP网关连接PAC3200电能表配置案例
  • 企业高性能web服务器(4)
  • 【运维进阶】Ansible 自动化
  • AI重构Java开发:飞算JavaAI如何实现效率与质量的双重突破?
  • 计算机网络摘星题库800题笔记 第6章 应用层
  • [Robotics_py] 机器人运动模型 | `update`函数 | 微积分矩阵
  • Visual Studio中VC++目录、C/C++和链接器配置的区别与最佳实践
  • 北京JAVA基础面试30天打卡08
  • 【问题解决】从Anaconda环境迁移到miniforge并在IDEA中完成环境配置
  • K8S学习---- Kubernetes 架构:从控制平面到工作节点的协作逻辑
  • Vue接口平台十三——测试记录
  • Git 撤回已推送到远程的最近push
  • 【数据结构入门】堆
  • NLP—词向量转换评论学习项目分析真实案例