Redis数据类型及其底层,以及使用场景

Redis常见的数据类型有五个,还有三个特殊数据类型

常见的是以下五个

  1. String字符串
  2. hash
  3. list列表
  4. set集合
  5. Zset有序集合

不常见的此处只列举出一个算作较常用的

  1. bitmap

  1. String字符串

String类型字符串内部结构是key-value类型的,key是String类型的,value不仅可以是String,还可以是整数

使用场景

  1. 缓存
    • 可以将耗时时间长,频繁调用的接口存储到缓存中,减少对数据库的压力,提高了性能
  2. 全局唯一ID使用
  3. 计数器,例如可以统计视频的播放次数
  4. 限流
    1. 限制用户使用接口的次数
    2. 限制用户使用付费的接口,比如短信,例如每分钟限制使用一次
  5. 共享session
    • 实现全局session

  1. hash(哈希)

hash是一个String类型的field和value之间的映射表,value内部是用HashMap实现的,里面可以存储不同的数据类型

使用场景

可以存储多种信息结合的数据。

比如以下三种:

  1. 商品信息
  2. 用户信息
  3. 订单信息

  1. list

list底层是使用双向链表实现的,可以实现栈和队列的数据结构,通过灵活的变化数据结构,可以获取指定范围的元素,获取指定索引的元素,是一种比较灵活的数据结构。

使用场景

  1. 高并发的情况下进行数据处理
    1. 对于并发量高的接口,可以先将数据缓存下来,进行异步处理,通过定时任务进行异步处理与落库
  2. 组合成其他的数据结构
    1. 队列
    2. 有限集合
    3. 阻塞消息队列
  3. 将一个用户的url访问权限进行存储,使用的时候调出来检查

  1. Set

Set里面的元素是不允许重复的,他的底层实现是用HashMap里面的key实现的,Set内部的元素是无序的,不可以通过索引来查找元素。Set支持增删改查,因为Set是由哈希表实现的,所以增,删,查的速度都很快,是O(1),专门提供了一个接口,可以查找元素是否在Set中存在,这是list达不到的。还支持进行交集,并集,差集的使用

使用场景

查找两个人的兴趣交集,生成随机数,社交需求,求交集,将交集存储到key1中。


  1. Zset

Zset是sorted set的简称,可以根据source进行排序,增加元素和修改元素的时候,设定source会进行重新排列

与Set的区别:

和set相比,Zset多了一个排序的功能,可以根据权重source来进行有序排列,每次指定source后,都会重新进行排序。

使用场景

排行榜(按照时间顺序,播放量,点赞最多优先等)


bitmap(位图)

位图,占据的空间很少。内部维护数组char M [N],存储的数据是0和1,内部的实现均采用位操作

使用场景

适用于大规模数据,但数据状态又不是很多的情况,可以用来统计以下事务,比如

  1. 亿级以上用户的七天连续签到的用户
  2. 所有用户一个月内签到次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值