Redis 的五种基本类型(实战篇)

有理想的菜鸡

共 1727字,需浏览 4分钟

 ·

2021-03-17 15:54

良心公众号

关注不迷路

Redis 是一个速度非常快的非关系型数据库,它可以存储键 (key) 与 5 种不同类型的值 (value) 之间的映射,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展性能。

《Redis In Action》Josiah L. Carlson 著


Redis 可以存储键 (key) 与 5 种不同类型的值 (value) 之间的映射,这 5 种类型如下图所示:

接下来,我们针对这五种数据类型,一一来看。


01

String类型


String 类型是 redis 中最最基础的字符串类型,它的常用命令如下图所示:

如上图所示,图中针对 String 类型的每一个命令,都给出了一个示例。部分命令如 incr、decr 是有使用条件的,当 key 对应的 value 是可以执行加 1 操作的时候才可以成功加 1,否则将会抛出错误。而对于像 set、get、del 这些基础的命令,其操作不受字符串的值的任何影响。


02

List类型


List 类型也是 redis 支持的一种基本类型,用于存储列表,可以简单地类比为 Java 中的 List。它的常用命令如下图所示:

如上图所示,图中针对 List 类型的每一个命令,都给出了一个示例。其中,值得一提的是,对于像 brpop 和 brpoplpush 这种阻塞式的弹出命令和弹出和推入命令,最常用到的场景就是消息传递和任务队列。


03

Hash类型


Hash 类型也就是我们常说的散列类型,它可以将多个键值对存储到 redis 的一个键中,它的常用命令如下图所示:

如上图所示,图中针对 Hash 类型的每一个命令,都给出了一个示例。可以体会到,redis 对于 Hash 类型的支持,更像是支持一个简易版的 redis,从而产生了一个 redis-key 对应一系列散列键值对的结构。


04

Set类型


Set 类型也就是我们非常熟悉的集合类型,与 Zset 类型不同的是,Set 类型是一种无序的集合,它采用无序的方式存储元素,它的常用命令如下图所示:

如上图所示,图中针对 Set 类型的每一个命令,都给出了一个示例。图中罗列的是最为基础的一些关于集合类型的一系列操作,事实上,redis 还支持关于集合的一系列常用的计算,包括求集合之间的交集、并集和差集等操作。我们在这里展开说一说如何使用 redis 进行集合之间的这三种常用的运算:

// 求交集(例如:求 set1 和 set2 以及 set3 三个集合之间元素的交集)sinter set1 set2 set3
// 求并集(例如:求 set1 和 set2 两个集合之间的并集)sunion set1 set2
// 求差集(例如,求 set1 和 set2 的差集)sdiff set1 set2

基于上述三种操作,我们可以完成很多场景下,需要对多个集合中元素进行交并差计算的任务。


05

Zset类型


Zset 类型就是我们上文提到的有序集合的类型,和 Set 类型相比,它支持更加多样性的业务场景,同时也相对复杂,它的常用命令如下图所示:

如上图所示,图中针对 Zset 类型的每一个命令,都给出了一个示例。针对有序集合的概念,可以这么理解,它是在无序集合的基础上,针对集合中的元素,维护一个与之对应的权重值,进而可以依据权重值去实现对更加复杂场景的支持。


综上所述,redis 的五种基本类型的常用操作就总结到这里了。下一篇文章中,菜鸡将会进一步分析五种基本类型的底层原理,理论和实践相结合,相信你会有更多收获!


欢迎关注【有理想的菜鸡】公众号,大家一起讨论技术,共同成长!

学习 | 工作 | 分享

👆长按关注“有理想的菜鸡

只有你想不到,没有你学不到
浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报