5-1 你们项目中签到为什么要使用bitmap
核心就是为了节省资源
因为使用bitmap,它是以二进制0和1来表示数据的,我们用0表示未签到,1表示已签到
这样就可以把一个人在某一个月份的签到放在一条记录里面,大大节省空间
5-2 你们项目中积分功能是如何实现的
在我们的项目中积分功能主要涉及学习微服务,其中签到、学习、写问答、写笔记、写评价都可以获得积分
为了解耦合,我们使用了MQ,生产者一方发送消息,消费者则监听消息
监听到消息后:首先判断下当前这种获取积分的方式有没有积分上限,没有的话直接保存积分记录。
有积分上限的话:先从库中查询一下,当前这种方式今天已经获取多少积分了,如果超出了每日上限就结束。
如果没有超出:则判断一下,今天当前这种方式获取的积分 + 本次的积分是否大于每日上限,如果大于则只保存欠额部分
5-3 Redis三大新面试点: 跳表、pipeline、bitmap
跳表是一种数据结构,用来实现有序集合zset数据类型。它具有类似平衡树的性能,通过使用多层次的指针来快速定位元素,从而实现快速的查找、插入和删除操作。
跳表的优点包括简单、高效的查找、插入和删除操作,以及相对容易实现。
跳表的缺点是占用更多的内存空间,并且在高并发写入的情况下可能会导致性能下降。
跳表是一种高效的数据结构,适用于实现有序集合
pipeline
在Redis中,Pipeline是一种用于批量执行多个命令的机制。通过使用Pipeline,客户端可以将多个命令打包发送给服务器,然后一次性获取所有命令的执行结果,从而减少了网络延迟和提高了性能。
总之,Pipeline可以提高命令执行的效率,特别适用于需要批量处理数据的场景。
bitmap
bitmap是以二进制(bit位)的形式进行存储,每个位代表一个布尔值(0或1)。
这种存储方式使得bitmap在处理大量数据统计和判断时,可以只占用非常小的一部分内存,并且计算速度非常高效。使用场景有记录用户的行为、统计用户的活跃情况等。
bitmap是一种高效的数据结构,可以帮助你处理大规模的布尔型数据
day05业务题
最新推荐文章于 2024-08-14 23:12:09 发布