第五条业务题

5-1 你们项目中签到为什么要使用bitmap
Redis的bitmap底层还是基于String类型实现的, 存储数据是以二进制(bit位)为单位进行存储的。
使用他的原因是,当我们使用mysql存储一些类似于打卡信息的话,大量的用户打卡信息会很耗费存储空间,但是使用bitmap使用二进制数据存储这些打卡信息,能大大节省存储空间,并且使用bitmap二进制存储正好映射打卡状态(1已打卡,0未打卡),而且做数据操作的时候只占用小部分内存,速度也非常高效。
5-2 你们项目中积分功能是如何实现的
首先进行需求分析,,积分功能有哪些需求,需要几张表,表中有哪些字段,怎样获取积分,需要哪些技术,需要保存在哪里,积分功能需要谁获得的积分(UserId),获取积分的途径(Type),此次获取的积分值(points)等,然后根据表创建相关业务层,然后获取积分,需要五个途径,每日签到(包含连续签到),课程学习,提问回答等,在这些业务的方法里添加等到积分值的业务逻辑,通过RabbitMq异步监听,然后判断类型是否有上限值,然后判断此类型的今天获取积分值是否达到上限,达到就结束返回,未达到就保存欠额部分,然后积保存到数据库中。除此之外还有查询积分,根据用户Id和日期 根据类型进行分组 ,封装返回结果返回前端展示
连续签到的业务逻辑:首先要知道判断连续签到就是判断bitmap中今天到前面n天1的连续个数,那么就需要获取bitmap中的二进制数值,首先使用redisTemplate根据key和当天日期天数获取集合,取出集合第一个元素,然后转化为二进制,因为二进制中的数据是从月初开始,因此要进行反转到今日,然后使用indexof判断第一个为0元素的位置,位置就等于连续天数,然后根据连续签到奖励积分机制,进行对应积分的增加,然后将积分值保存对象然后保存到数据库。
5-3 Redis三大新面试点: 跳表、pipeline、bitmap
跳表:(Skip List)是一种可以快速查找、插入和删除的数据结构,一种可以快速查找、插入、删除的数据结构,据说可以代替红黑树  redis中的有序集合,其实就是基于跳表实现的。它可以代替红黑树,并且实现起来相对简单。跳表是一种多层的有序链表,它来源于链表,在链表的基础上结合了二分的思想进行改造。跳表的核心思想是通过添加多级索引来加速查找操作。每一级索引都是原始链表的一个子集,且每一级索引的元素都是有序的。通过这种方式,我们可以在跳表中快速定位到目标元素,而不需要遍历整个链表
pipeline:
Pipeline 是Redis 的一种特性,允许客户端将多个命令打包成一个请求发送给服务器,从而减少通信开销,通过使用Pipeline,客户端可以在不等待服务器响应的情况下发送多个命令,然后一次性接收所有命令的响应
Bitmap:
Bitmap是Redis的一种数据结构,用于处理位操作,它通常用于记录用户的行为或者状态,例如记录用户是否点击某个按钮.是否订阅了某个频道等,Bitmap可以高效地使用少量内存来表示大量的布尔值,从而节省内存空间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值