数据结构而非类型
Redis 有 5 种基本数据结构:
有很多文章都会说,Redis 支持 5 种常用的 数据类型,这其实存在很大的歧义。Redis 里存的都是二进制数据,其实就是字节数组 (byte[]),这些字节数据是没有数据类型的,只有把它们按照合理的格式解码后,可以变成一个字符串,数字或对象,此时才具有数据类型。
所以任何东西只要能转化成字节数组 (byte[]),就可以存到 Redis 里,无论是字符串、数字、对象、图片、声音、还是其他文件。
string
Redis 里的数据结构 string 指的并不是字符串,它其实表示的是一种最简单的,一个 key 只能对应一个 value 的数据结构。这里的 key 和 value 都是 byte 数组,只不过 key 一般是由一个字符串转换成的 byte 数组,value 则根据实际需要而定。
在特定情况下,对 value 也会有一些要求,比如要进行自增或自减操作,那 value 对应的 byte 数组必须要能被解码成一个数字才行。
value 是一个可变的字节数组,我们初始化字符串的内容,
list
那么 list 这种数据结构,其实表示一个 key 可以对应多个 value,且 value 之间是有先后顺序的,value 值可以重复。
set
set 这种数据结构,表示一个 key 可以对应多个 value,且 value 之间是没有先后顺序的,value 值不可以重复。
hash
hash 这种数据结构,表示一个 key 可以对应多个 key - value,此时这些 key - value 对之间的先后顺序一般意义不大,这是一个按照名称语义来访问的数据结构,而非位置语义。
zset
zset 又称 sorted set,这种数据结构表示一个 key 可以对应多个 value,value 之间是有大小排序的,value 值不可以重复。每个 value 都和一个浮点数相关联,该浮点数叫 score。元素排序规则是:先按 score 排序,再按 value 排序。