常用命令:
set
,get
,decr
,incr
,mget
String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字。
常用命令:
hget
,hset
,hgetall
hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以仅仅修改这个对象中的某个字段值。 比如可以用 hash 数据结构来存储用户信息,商品信息:
key = user_123456
value = {
"id": 1,
"name": "Jared",
"age": 20,
"location”: "CHINA”
}
常用命令:
lpush
,rpush
,lpop
,rpop
,lrange
list 就是链表,Redis list 的应用场景非常多,也是 Redis 最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用 Redis 的 list 结构来实现。
Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,方便操作,虽然会带来部分额外的内存开销。
另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。
常用命令:
sadd
,spop
,smembers
,sunion
set 对外提供的功能与 list 类似,也是一个列表的功能,特殊之处在于 set 是可以自动排重的。
当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list 所不能提供的。可以基于 set 轻易实现交集、并集、差集等操作。
比如:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程,具体命令如下:
sinterstore key1 key2 key3 将交集存在 key1 内
常用命令:
zadd
,zrange
,zrem
,zcard
和 set 相比,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列。
举例: 在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 Sorted Set 结构进行存储。