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

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.dtcms.com/a/329264.html

相关文章:

  • uniapp跨端性能优化方案
  • 各种排序算法(一)
  • Highcharts 图表示例|面积图与堆叠图(Area Stacked Chart)——让数据趋势更有层次感
  • SODA自然美颜相机(甜盐相机国际版) v9.3.0
  • LangChain是如何实现RAG多轮问答的
  • 【算法岗面试】手撕Self-Attention、Multi-head Attention
  • 比特币持有者结构性转变 XBIT分析BTC最新价格行情市场重构
  • 微店商品数据API接口的应用||电商API接口的应用
  • 数据结构与算法-选择题
  • 公司项目用户密码加密方案推荐(兼顾安全、可靠与通用性)
  • Chaos Vantage 2.8.1 发布:实时探索与材质工作流的全新突破
  • CacheBlend:结合缓存知识融合的快速RAG大语言模型推理服务
  • 大模型推理框架vLLM 中的Prompt缓存实现原理
  • 性能优化之通俗易懂学习requestAnimationFrame和使用场景举例
  • 来伊份×养馋记:社区零售4.0模式加速渗透上海市场
  • 四、深入剖析Java程序逻辑控制:从字节码到性能优化
  • MySQL事务原理分析以及隔离与锁
  • 从人机协作到情感共鸣:智能销售机器人如何重塑零售体验
  • 基于RTSP|RTMP低延迟视频链路的多模态情绪识别系统构建与实现
  • C++ 类和对象详解(1)
  • 飞算JavaAI实现数据库交互:JPA/Hibernate + MyBatis Plus基础功能学习
  • STM32的UART奇偶校验注意
  • 20.04ubantu 编译lio_sam问题解决
  • 推荐系统论文分享之多任务模型--PLE(一)
  • Java 中 static 关键字详解(更新版)
  • JavaScript手录16-定时器
  • 基于51单片机的手机蓝牙控制8位LED灯亮灭设计
  • 传统Python开发工程师转型大模型智能体开发工程师路径
  • jq实现页面区域内拖动功能
  • InfluxDB 在工业控制系统中的数据监控案例(一)