前言

Redis 支持五种的数据类型:

  1. string(字符串)
  2. hash(哈希)
  3. list(列表)
  4. set(集合)
  5. sorted set(有序集合)

string(字符串)

string 是 redis 最基本的类型,一个 key 对应一个 value,一个键最大能存储 512 MB。

string 类型是二进制安全的。可以包含任何数据,比如 jpg 图片或者序列化的对象。




redis hash允许 key重复吗 redis hash大key_字符串


hash(哈希)

hash 是一个键值(key=>value)对集合,即编程语言中的 Map 类型。

hash 是一个 string 类型的 field 和 value 的映射表,适合存储对象,并且可以像数据库中 update 一个属性一样只修改某一项属性值。

使用场景:存储、读取、修改用户属性。


redis hash允许 key重复吗 redis hash大key_redis hash允许 key重复吗_02


从上图我们可以看到,hmset、hget 命令中,hmset 设置了 field=>value 对,hget 获取对应 field 对应 value。

每个 hash 可以存储 2³²-1 键值对(40多亿)。

list(列表)

list 是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

增删快,提供了操作某一段元素的 API。

使用场景:

  1. 最新消息排行等功能(比如朋友圈的时间线);
  2. 消息队列。


redis hash允许 key重复吗 redis hash大key_redis_03


列表最多可存储 2³²-1 元素(每个列表可存储 40 多亿)。

set(集合)

set 是 string 类型的无序集合。

集合是通过哈希表实现的,元素不重复。

添加、删除、查找的复杂度都是 0(1)。为集合提供了求交集、并集、差集等操作。

使用场景:

  1. 共同好友
  2. 利用唯一性,统计访问网站的所有独立 IP
  3. 好友推荐时,根据 tag 求交集,大于某个阀值就可以推荐

sadd 命令

添加一个 string 元素到 key 对应的 set 集合,成功返回 1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。


redis hash允许 key重复吗 redis hash大key_使用场景_04


注意:以上图片实例中 test2 添加了两次,但是根据集合内元素的唯一性,第二次插入的元素将被忽略。

集合中最大的成员数为 2³²-1(每个集合可存储 40 多亿个成员)。

sorted set(有序集合)

sorted set 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

sorted set 成员是唯一的,但分数(score)却可以重复。

数据插入集合时,已经进行天然排序。

使用场景:排行榜;带权重的消息队列。

zadd 命令

添加元素到集合,元素在集合中存在则更新对应 score。


redis hash允许 key重复吗 redis hash大key_redis hash允许 key重复吗_05

-- 完结 --