【从零开始学习Redis|第五篇】Redis 常见数据类型和应用场景

本篇帮助你学习到Redis 常见数据类型和应用场景

前言

我们都知道Redis是一个Key → Value结构的数据库,Redis 和传统数据库最大的区别是:数据存在内存里,这使得他读取的速度非常快。问题来了:
如果 Redis 只是 Key-Value,会发生什么?

假设 Redis 只有最简单结构:

key → value

那 value 只能是一个字符串。

比如存用户信息:

user:1 → "Tom,20,Beijing"

问题马上出现:

如果我只想修改 年龄:

20 → 21

你必须:

1 取出整个字符串

2 解析

3 修改

4 再写回

这非常麻烦。

于是 Redis 做了一件非常聪明的事情:

直接提供多种数据结构,让你更自然地存数据。

Redis 不只是数据库,它更像一个:

高性能数据结构服务器

Redis 数据类型整体结构

String

Hash

List

Set

Sorted Set (ZSet)

数据结构 像什么
String 一个值
Hash 一个对象
List 一个队列
Set 一个不重复集合
ZSet 一个带排名的集合

String:最基础的数据类型

在Redis中String不仅仅可以存储字符串。

Redis 的 String 可以存:

字符串

数字

JSON

二进制

应用场景 1:缓存

例如:

user:1001 → JSON用户信息

流程:

请求用户信息

先查 Redis

Redis 有 → 直接返回

Redis 没有 → 查数据库

这样数据库压力会小很多。

应用场景 2:计数器

Redis 的 String 支持一个非常强大的操作:

INCR

意思是:

数字 +1

例如统计文章阅读量:

article:100:view → 100

用户访问一次:

INCR article:100:view

阅读量自动增加。

常见用途:

点赞数 阅读量 库存 访问量

Hash:用来存对象

如果要存 结构化数据,String 就不够方便了。

比如用户对象:

id

name

age

city

Redis 提供:Hash

结构像这样:

key → field → value

例子:

user:1001

name → Alice

age → 20

city → Shanghai

你可以把 Hash 理解为:

一个对象

Hash 的优势

如果用户年龄更新:

20 → 21

只需要修改一个字段:

HSET user:1001 age 21

不需要更新整个对象。
Hash 常见场景

非常适合存:

用户信息 商品信息 订单信息

因为它们本质上都是:

一个对象 + 多个属性

List:有顺序的列表

List 的本质是:

一个有序队列

例如:

消息1, 消息2, 消息3

Redis 支持两端操作:

LPUSH 左边插入 RPUSH 右边插入

所以它可以模拟:

队列

应用场景 1:消息队列

生产者:

LPUSH queue message

消费者:

RPOP queue

流程:

生产者 → Redis List → 消费者

这种方式常用于简单系统的任务队列。

应用场景 2:最新列表

例如:

最新文章 最新评论

新数据:

LPUSH

读取:

LRANGE

Set:不重复集合

Set 的特点非常简单:

元素不会重复

例如:

{1,2,3,4}

如果你插入:

SADD set 3

结果仍然是:

{1,2,3,4}

Set 的应用
用户去重

例如统计:

今天访问网站的用户

操作:

SADD visit:20250308 user1

SADD visit:20250308 user2

Redis 自动去重。

共同好友

Redis 支持集合运算:

交集

并集

差集

例如:

A 的好友

B 的好友

求:

共同好友

ZSet:带排名的集合

ZSet(Sorted Set)是 Redis 非常强大的结构。

结构:

value + score

例如:

Alice 100

Bob 80

Tom 120

Redis 会按 score 自动排序:

Tom 120

Alice 100

Bob 80

最经典应用:排行榜

例如游戏排行榜:

玩家A 1500

玩家B 2000

玩家C 1800

存入:

ZADD rank 1500 playerA ZADD rank 2000 playerB

查询:

ZRANGE rank

即可得到排行榜。

常见用途:

游戏排行榜

热搜榜

点赞排行

积分榜

总结

本篇讲述了Redis中的五种常见数据类型:String,Hash,List,set,Zset。具体区分见下表。

数据结构 本质 典型场景
String 单值 缓存、计数器
Hash 对象 用户信息
List 队列 消息队列
Set 去重集合 用户集合
ZSet 排序集合 排行榜
相关推荐
三十..2 分钟前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶20 分钟前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
努力努力再努力wz37 分钟前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
sensen_kiss1 小时前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.9 软件测试 (Software Testing)(下)
学习·软件工程
JdSnE27zv1 小时前
Qt 操作SQLite数据库
数据库·qt·sqlite
wu_ye_m1 小时前
学习c语言第35天 函数声明和定义
c语言·开发语言·学习
tedcloud1231 小时前
HyperFrames部署教程:用HTML生成MP4视频
前端·数据库·人工智能·html·音视频
布朗克1681 小时前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio
阿演1 小时前
DataDjinn 新版本更新:新增 Oracle 支持,查询窗口、表预览和连接树继续打磨
数据库·oracle·ai编程·数据库连接工具
清辞8531 小时前
Coze从入门到实战---第一、二章
大数据·人工智能·学习·语言模型