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 的五种基本类型的常用操作就总结到这里了。下一篇文章中,菜鸡将会进一步分析五种基本类型的底层原理,理论和实践相结合,相信你会有更多收获!
欢迎关注【有理想的菜鸡】公众号,大家一起讨论技术,共同成长!
学习 | 工作 | 分享
👆长按关注“有理想的菜鸡”