1.18第五天

5-1 你们项目中签到为什么要使用bitmap
       bitmap是以二进制0和1来表示数据的,在我们项目中,用0 表示未签到,1表示已签到,这样就把一个人在某个月份签到记录放到了一条记录里,可以非常高效地表示和查询用户的签到记录,很大程度上节省了存储空间。


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

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

       其次,在学习微服务中编写程序监听MQ,消费消息;

       在编写程序时:

       第一步先判断积分类型是否为签到,不是签到类型的话,要对应每个类型的每日积分上限;

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

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

       以上就是我项目中积分功能的实现。
5-3 Redis三大新面试点: 跳表、pipeline、bitmap

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

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

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

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

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

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

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

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

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

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值