Logo
Section 1 / 13

Redis 数据类型

学习 Redis 支持的各种数据类型。

导入

Redis 数据类型

学习 Redis 支持的各种数据类型。

正如我们之前提到的,Redis 是一个键值存储系统,但这并不意味着它只存储字符串类型的键和字符串类型的值。Redis 支持多种数据结构作为值类型。Redis 中的键是一个二进制安全的字符串,最大长度可达 512 MB,但建议始终使用较短的键。

二进制安全的字符串是指可以包含任意类型数据的字符串,例如 JPEG 图像或序列化的 Java 对象。

下面我们来讨论 Redis 支持的几种值类型。

字符串(String)

这是 Redis 中最简单的值类型,可以与键关联。Memcached 缓存仅支持字符串类型的值。而 Redis 的优势在于,不仅可以存储字符串,还能存储字符串集合。字符串类型的值最大不能超过 512 MB 的文本或二进制数据,但它可以存储任何类型的数据,如文本、整数、浮点数、视频、图片和音频文件。

Memcached 也是一个开源的分布式内存缓存系统。与 Redis 类似,它也以键值对形式存储数据,但仅支持字符串类型的数据。

Redis 的字符串类型可用于存储会话 ID、静态 HTML 页面、配置 XML、JSON 等内容。如果存储的是整数,还可以用作计数器。

列表(List)

当需要在 Redis 中存储字符串集合时,可以使用列表类型。在 Redis 中使用列表时,元素以链表形式存储。其优点是可以在头部快速插入或删除元素。例如,向包含 500 个记录的列表中添加元素,所需时间与向包含 50,000 个记录的列表中添加元素的时间大致相同。

缺点是,若要访问某个特定元素,必须遍历整个列表,这会带来较高的时间开销。由于列表基于链表实现,元素按插入顺序排列。

列表适用于那些插入顺序重要,且写入速度优先于读取速度的场景。例如,存储日志信息就是一个典型应用。

集合(Set)

集合类型的值与列表类似,唯一的区别是集合不允许重复元素。集合中的元素没有固定的排序顺序。

集合在添加和删除操作上具有常数时间复杂度。我们可以用集合来存储需要保证唯一性的数据,例如统计网站的独立访问用户数量。

有序集合(Sorted Set)

如果需要元素保持有序,可以使用有序集合作为值类型。每个有序集合中的元素都关联一个数值,称为“分数”(score)。元素根据其分数进行排序存储。

假设有一个键名为 fruits,我们需要将 apple 和 banana 作为值存储。若 apple 的分数为 10,banana 的分数为 15,则因为 scoreapple<scorebananascore_{apple} < score_{banana},所以排序结果为:apple 在前,banana 在后。

如果两个元素的分数相同,则比较它们的字典序大小。两个字符串不能完全相同,因为集合中不允许重复元素。

字典序是指按照字典顺序排列,但注意所有大写字母排在所有小写字母之前。

哈希(Hash)

哈希类型的值由一系列字段-值对组成。例如,若需要存储学生各科成绩的信息,可以将科目作为键,而值则是一个字段-值对结构,其中字段为学生姓名,值为得分。

让我们开始吧

在 Redis 中存储字符串:插入与获取命令