常用业务流程梳理Day5

5-1你们项目中为什么要使用bitmap

        bitmap在处理大量数据统计和判断时,可以只占用非常小的一部分内存,并且计算速度非常高效。

        在项目中,我们把bitmap的每一个bit设为对应当月的每一天,形成映射关系,用0和1分别标识是否打卡。这样我们就可以将一位用户整个月份的签到记录存放到一条数据中,大大节省其内存占用。

        而我们的redis中恰好提供了bitmap的数据结构和相关操作命令,我们可以直接使用。    

        补充:在Redis中,bitmap底层还是基于String类型实现的, 存储数据是以二进制为单位进行存储。

5-2 你们项目中积分功能是如何实现的

        在的我项目中积分微服务是一个独立且通用的微服务,可以通过签到、课程学习、评价、问答和笔记等方式获取积分,主要流程如下:

        首先,在签到和问答对应的微服务中找到获取积分的业务,向MQ投递消息。消息主要包括:用户id、增加的积分、增加积分的类型;

其次,在学习微服务模块中编写对应的监听器监听不同微服务相应的队列,消费消息;

在编写程序时:

        第一步先判断当前积分类型是否有获取上限,如果有,根据上限确定本次积分保存大小;

        第二步查询数据库中对应类型今日已经获取的积分,与对应类型每日上限进行判断,如果该积分大于等于对应类型的积分上限,则直接返回;如果该积分加上增加的积分大于等于对应类型的积分上限,则增加的积分等于该类型上限积分减去查询的积分;

        最后把这条记录保存到数据库中;

以上就是我项目中积分功能的实现

5-3 Redis 2024三大新面试点: 跳表、pipeline、bitmap

        跳表是一种数据结构,它通过在有序链表上方建立多层索引来提高查找效率。Redis 中的有序集合ZSet就是使用跳表来实现的,其集合中的元素按照分数score有序排列。

        跳表由多层链表组成,通过在不同层次建立索引,实现了快速的查找,在实际使用中,跳表的特性使得有序集合在查找、插入和范围查询等操作上表现得较为高效。

        总之,跳表的使用在Redis中主要体现在有序集合的实现上,提供了对有序集合进行高效操作的手段。

5-4 什么是pipeline

        在Redis中,pipeline是一种用于批量执行多个命令的机制,它可以在一个网络往返中发送多个命令,并在一个网络往返中接收它们的响应,这样减少了网络往返的次数和网络开销,可以大大提高性能。

        总之在实际应用中,pipeline通常用于批量写入或读取大量数据时,以及需要原子性操作的场景。

5-5 什么是bitmap

        在Redis中,bitmap是一种数据结构,用于存储位集合或位图;它是一个由二进制位组成的数据结构,其中每个位都是用0和1进行存储;每个位表示某种状态或标志。

        由于每个位只占1个bit,在存储信息时非常节省空间;

        bitmap的使用场景也有很多,例如:用户在线状态(0离线、1在线)、用户签到记录(0当天未签到、1当天已签到)等等。

        总之,bitmap是一种简单而高效的数据结构,通常用于判断某个数据是否存在

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值