【从零开始学习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 分钟前
告别套娃式子查询:SQL WITH 语句(CTE)深度实战指南
数据库·sql
却话巴山夜雨时i6 分钟前
互联网大厂Java面试:从Spring到微服务的全栈挑战
java·spring boot·redis·微服务·面试·kafka·技术栈
杰克尼10 分钟前
springCloud(day10-面试篇)
redis·spring cloud·面试
zzh08114 分钟前
PG数据库日常应用
数据库·oracle
阿维的博客日记14 分钟前
MySQL中type字段解析
数据库·mysql
Trouvaille ~17 分钟前
【MySQL篇】表的操作:数据的容器
linux·数据库·mysql·oracle·xshell·ddl·表的操作
黑牛儿19 分钟前
从0开始实现Mysql主从配置实战
服务器·数据库·后端·mysql
爱学习的小囧25 分钟前
vSphere 9.0 API 实操教程 —— 轻松检索 vGPU 与 DirectPath 配置文件
linux·运维·服务器·网络·数据库·esxi·vmware
麦聪聊数据28 分钟前
数据库安全与运维管控(一):MySQL、PG与Oracle原生审计机制对比
运维·数据库·mysql·oracle