个人博客

redis的数据类型

redis支持了这些多种常见的数据类型,现在被广泛的应用在各大公司的内部,它提供了string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)等五种数据类型。

1、字符串

字符串类型是redis最基础的数据结构,字符串可以存储简单的字符串、复杂的字符串(xml,json)、数字(整数,浮点数)、二进制(图片,视频,音频),但最大不能超过512M。

使用场景

缓存功能:字符串最经典的使用场景,redis作为缓存层,mysql作为存储层,绝大部分热点数据都是在redis中获取,减少了数据库的请求次数,降低了后端的压力。

计数器:运用字符串类型作为计数的基础工具,它有命令支持增加、减少的操作,可以实现快速计数的功能。

共享session:出于负载均衡的考虑,分布式服务会将用户访问请求发送到不同的服务器上,为了避免不同的服务器找不到session的问题,可以把session的信息存储到redis进行统一管理,所有的服务器都直接到redis获取session信息。

限速:出于服务器性能和安全性的考虑,某些API接口需要对访问频次进行限制,会限制用户每分钟的访问次数。

2、哈希

在redis中,哈希类型就是一种键值对结构,如value={{field1, value1}......{fieldN, valueN}}。可以方便将某一个事物的所有信息存放在一个键中,统一管理它的生命周期。

使用场景

用户信息:使用一个hash key记录一个用户信息,hash field为记录用户的信息内容,如name、birthday等信息,方便统一管理用户信息的生存周期(统一创建、删除)。

3、列表

列表类型用来存储多个有序的字符串,列表中的每个字符串成为元素,一个列表中最多可以存储2的32次方-1个元素,在redis中,可以在列表的两端插入和弹出,还可以获取指定范围的元素列表,获取指定下标的元素。它可以充当队列和栈的角色。

使用场景

消息队列:redis的rpush+lpop命令组合即可实现阻塞队列,生产者客户端是用rpush从列表右侧插入数据,消费者从左侧lpop命令获取头部数据。

文章列表:每个用户都有属于自己的文章列表,可以使用列表来有序的存储文章,既可以实现分页,也可以按索引获取文章。

4、集合

集合类型也是用来保存多个字符串的元素,但和列表不同的是集合中不允许有重复的元素,并且集合中的元素是无序的,不能通过索引下标获取元素,redis除了支持增删改查,同时还支持多个集合的交集、并集、差集,可以解决实际开发中很多问题。

应用场景

标签:集合类型比较典型的使用场景,比如一个广告的投放,要对关注娱乐新闻的学生进行推广,这是就要对关注娱乐新闻的人群和学生人群做一次交集,就可以得到相应的投放人群进行广告投放,提高投放效果。

5、有序集合

有序集合和集合有着必然的联系,它保留了不重复的特性,但是不同的是,有序集合中的元素可以排序,但是它和列表不同,是通过给每个元素设置一个分数作为排序的依据。(元素不可重复,但是分数可以重复)。

使用场景

排行榜:有序集合经典使用场景。如视频网站的电影按照评分、播放量、点赞数等等进行排序。

相关标签
回到顶部