前言
Redis 支持五种的数据类型:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- sorted set(有序集合)
string(字符串)
string 是 redis 最基本的类型,一个 key 对应一个 value,一个键最大能存储 512 MB。
string 类型是二进制安全的。可以包含任何数据,比如 jpg 图片或者序列化的对象。
hash(哈希)
hash 是一个键值(key=>value)对集合,即编程语言中的 Map 类型。
hash 是一个 string 类型的 field 和 value 的映射表,适合存储对象,并且可以像数据库中 update 一个属性一样只修改某一项属性值。
使用场景:存储、读取、修改用户属性。
从上图我们可以看到,hmset、hget 命令中,hmset 设置了 field=>value 对,hget 获取对应 field 对应 value。
每个 hash 可以存储 2³²-1 键值对(40多亿)。
list(列表)
list 是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
增删快,提供了操作某一段元素的 API。
使用场景:
- 最新消息排行等功能(比如朋友圈的时间线);
- 消息队列。
列表最多可存储 2³²-1 元素(每个列表可存储 40 多亿)。
set(集合)
set 是 string 类型的无序集合。
集合是通过哈希表实现的,元素不重复。
添加、删除、查找的复杂度都是 0(1)。为集合提供了求交集、并集、差集等操作。
使用场景:
- 共同好友
- 利用唯一性,统计访问网站的所有独立 IP
- 好友推荐时,根据 tag 求交集,大于某个阀值就可以推荐
sadd 命令
添加一个 string 元素到 key 对应的 set 集合,成功返回 1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。
注意:以上图片实例中 test2 添加了两次,但是根据集合内元素的唯一性,第二次插入的元素将被忽略。
集合中最大的成员数为 2³²-1(每个集合可存储 40 多亿个成员)。
sorted set(有序集合)
sorted set 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
sorted set 成员是唯一的,但分数(score)却可以重复。
数据插入集合时,已经进行天然排序。
使用场景:排行榜;带权重的消息队列。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应 score。
-- 完结 --