5-1 你们项目中签到为什么要使用bitmap
使用 Bitmap 数据结构可以在 Redis 中高效地存储和处理签到功能中的用户签到状态,节省空间、提高性能,并且方便进行统计和扩展。
1.是一种紧凑的数据结构,可以有效地存储大量的布尔值。对于签到功能,每个用户每天的签到状态可以用一个位来表示,这样可以大大减少存储空间的占用。
2.Bitmap 提供了统计位为 1 的数量的操作,可以方便地统计用户的连续签到天数、总签到次数等统计信息。
3.由于 Redis 的 Bitmap 支持的位数非常大,可以满足大规模用户的签到需求,并且可以方便地扩展到多个 Redis 实例上进行分布式部署。
5-2 你们项目中积分功能是如何实现的
我们的用户在签到,互动,学习的时候会得到积分,积分可以使用户得到某些奖励。
1.我们根据产品原型可以得到积分表,需要记录下列信息,本次得到积分值积分方式获取积分时间获取积分的人
2.其他微服务向我们的积分微服务发送消息我们用到了RabbitMQ
3.我们的积分微服务负责监听MQ拿到消息对积分进行更改
5-3 Redis三大新面试点: 跳表、pipeline、bitmap
跳表:跳表(Skip List):跳表是一种数据结构,它通过在有序链表上增加多层索引的方式来加快查找速度,跳表可以允许快速的插入、删除和查找操作,在 Redis 中,跳表被用于实现有序集合(Sorted Set)数据结构,用于存储成员和分数之间的映射关系,并支持快速的范围查询操作
pipeline:在 Redis 中,Pipeline 是一种客户端批量发送多个命令,并一次性接收多个命令的返回结果的技术。通过使用 Pipeline,客户端可以将多个命令打包成一个请求发送给 Redis 服务器,减少了网络通信的开销,提高了性能。Pipeline 在需要批量操作或者需要减少网络延迟的场景下非常有用。
bitmap:在 Redis 中,Bitmap 是一种位图数据结构,用于存储大量的位数据。它通常用于表示某种状态或者标记,比如用户的签到状态、在线状态等。Bitmap 支持高效的位操作,比如设置、清除、查询某一位的值,以及统计位为 1 的数量等操作,非常适合用于存储和处理大规模的布尔值数据。