Redis_八种数据类型及其使用场景

Redis是开源的,内存中的数据结构存储系统,他可以用作数据库,缓存和消息中间件。

Redis支持的八种数据类型:

  • 五种基本数据类型:String,list,hash,set,zset
  • 三种特殊数据类型:geospatial,hyperloglog,bitmap

Redis的高性能有一部分是要归功于 数据类型的底层数据结构

基本数据类型:

1、String类型

String数据类型是简单的key-value类型,其实value不仅可以是String类型,也可以是数字。常规的key-value缓存应用。

常规计数:粉丝计数

2、hash类型

Redis中的hash是一个String类型的filed和value的映射表,每个hash可以存放2^23-1(40多亿)个键值对。使用场景:

  • 购物车 用户id key,购买产品 filed,购买数量 value
     
  • 存储对象 因为hash类型的(key,filed,value) 与对象的(对象id,属性,值)的结构相似,所以也可以用来存储对象。

3、list类型

Redis中的list是存储String类型元素的双向链表,可以支持通过push和pop操作实现从列表的头部或者尾部添加或则删除元素,可以当作栈也可以当作队列来用。

可以使用list来构建消息队列

4、set类型

set就是一个集合,集合的概念就是一堆不重复数据的组合。利用Redis的set数据结构,可以用来存放一些集合性质的数据。set集合是没有顺序的。

案例:例如在微博中将一个人关注的所有人存在放一个集合中。Redis还为集合提供了求交集,并集和差集等操作,可以实现对于共同关注,共同喜好等功能。

5、zset

zset相比于set增加了一个权重参数,使得集合中的参数可以按照权重进行排序。

排行榜应用:获得Top N的操作。知识库中热点重症查询次数。

  • 支持快速的插入和删除
  • 支持范围查询 

特殊数据类型:

1、geospatial 

redis在3.2推出的Geo类型,该功能可以推算出地理位置信息,两地之间的距离。需要下载城市数据,通过Java一次性导入。

2、hyperloglog

名词解释:

  • 基数:集合中所有不重复的元素的个数。
  • UV(Unique Visitor):是指通过互联网访问、浏览网页的自然人。访问网页的一个电脑客户端算一个访客,一天内一个访客只会被计算一次。

hyperloglog数据结构 是基于基数的统计算法。

这种数据结构应昌被应用于统计网站的UV。传统方法我们会使用set保存用户id,然后通过set集合中的数量来计算UV。通常会记录大量用户ID,并且一般用户的ID都比较长,因此占空间,还比较麻烦。该场景目的是计数,而不是保存数据。因此使用hyperloglog更为合适。

hyperloglog的优点:占用内存小,并且是固定的。存放2^64个不同元素的基数,只占用12KB的空间,但是他也存在百分之0.81的错误率。

3、bitmap 位图

bitmap就是通过最小单位bit来设置来进行0或者1的设置,来表示某个元素的值或者状态。一个bit的值只有0或1两种情况。因而bitmap比较时和用于统计状态,登录或者未登录,粉丝 活跃或者不活跃等。

 

参考文章

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值