Redis五种类型及应用场景

参考资料:redis终章html

redis有五种基本数据类型,分别是String、List、Hash、Set、Sorted Set,接下来会逐个介绍每种类型及其应用场景。redis

String

String是最简单也是最经常使用的数据类型,经过setget方法设置或获取数据,有以下使用场景缓存

  • **缓存功能:**最经常使用的功能,没有之一。好比,对某个用户对象转成JSON字符串,读取后再转换回目标对象;
  • **计数器:**经常使用于限制某个接口的请求次数,或者统计用户的点击次数等等,使用incr命令实现自增。实现计数器

Hash

这是相似Map的一种结构,经过hsethget方法设置或获取数据。暂时在项目中没有应用到这种结构。markdown

image-20201111150410410

List

List是简单的字符串列表,按照插入顺序排序,列表的头部是左边,尾部是右边。头尾均可以添加或移除元素。经常使用命令分布式

image-20201111152636983

应用场景:oop

  • 消息队列:能够使用左进右出,或者右进左出,生产者在一端压入数据,消费者从另外一端弹出数据。redis实现消息队列spa

    注意:这种消息队列须要消费者不断轮询,同时能够使用blpop或者brpop,这两个指令在列表没有元素时,会一直阻塞。.net

Set

Set是无序集合,会自动去重。经常使用命令code

这种数据类型主要特色时可以去重,在分布式环境下,能够使用redisset实现全局数据去重。orm

Sorted Set

Sorted set既能够去重,又能够排序。与set相比,写入value时,还须要设置score,redis会自动根据分数从小到达排序。经常使用命令

应用场景:

  • **延时队列:**把任务执行时间戳做为score,应用程序不断轮询redis,获取分数最小的元素,比较score和当前时间戳。

  • **排行榜:**好比歌曲榜单、游戏排行榜。多维度排序

    多数场景下,咱们须要多维度的排序,好比:软件下载榜单,先按照下载量排序,若是下载量相同,再按照最新下载时间排序.

    针对这种两维度排序,因为score是浮点型,咱们能够构建一个特殊的分数,整数部分为下载量,小数部分是下载时间,这样就实现两个维度排序。

    可是,若是是三个维度、四个维度呢??

    自定义权重公式,好比score=下载量*10000 + 下载时间

相关文章
相关标签/搜索