使用场景

String

String 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字,或者包含某种特定的数据格式,如可序列化对象,Java对象,Json,xml等。

除了可对字符串进行get/set操作,还可以追加字符串,获取字符串长度,设置过期时间,如果是数字还可以执行自增/自减操作。

典型场景如:首页统计数据,用户对象,系统配置元数据,点赞数,浏览数,粉丝数。

Hash

hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。每个 hash 可以存储键值对40多亿。

redis提供了丰富的命令可对hash数据进行增删改查,批量添加获取。

典型场景如:hash数据结构特别适合保存一组相关类的数据,如一个对象信息,一组特定的业务数据,比如我们可能有多个第三方服务商,如短信,这个时候我们缓存阿里云的短信配置信息和腾讯的短信配置信息。

List

List 类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。更详细的说,List类型是一个双端链表 的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除 元素,list的设计非常简单精巧,即可以做为栈,又可以作为队列。

使用list数据结构我们可以轻松构建出以下数据结构类型

  • 后进先出(LIFO) lpush + lpop = Stack(栈)
  • 先进先出(FIFO) lpush + rpop = Queue(队列)
  • lpush + brpop = Message Queue(消息队列,阻塞弹出)

应用场景:秒杀抢单,生产者/消费者模式

Set

set是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

应用场景:存储手机号,粉丝关注的集合数据,主要是存储某个相关的业务数据且无序不重复的。

Sorted Set

sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构

应用场景: 学生对象排序,设置分数插入到集合里,可以实现自动根据分数排序。

标签: none

添加新评论