业务题第五天

本文介绍了如何在项目中利用Redis的Bitmap数据结构节省签到数据存储空间,并详细阐述了积分功能的实现,包括签到奖励和防刷设计。同时,提到了Redis的跳表和Pipeline技术在提升性能中的作用。
摘要由CSDN通过智能技术生成

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

通过观察我们的签到表可以看出一条签到记录会占用很多字节,而我们每天的签到记录有很多,这就会浪费很多的储存空间,为了节省空间,我们可以使用Redis中提供好了的bitmap的数据结构和相关操作命令

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

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

       总之,使用BitmapJava项目中实现签到功能可以提高效率并节省内存空间,但需要根据实际情况进行选择和优化。

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

在我们的项目中积分功能是一个单独的微服务,用户可以根据自己的不同操作来获取积分的,比如,用户可以签到,刷视频,发表评论,用获得的积分来兑换优惠券,或者是参加排行榜

       用户签到我们可以设置为,用户每签到一天可以获得一点积分的奖励,当用户连续签到7天14天或者20天,我们可以给出相应的积分奖励,我们可以根据用户的id,用户连续签到的天数,以及当天签到的积分,计算出用户这次签到,可以获得多少积分,

       当用户,刷视频,和发表评论的时候,也可以获得积分,当然了我们必须给这些获得积分的操作,设置一个阈值,当超过这个阈值的时候用户就不会再获得积分了,为了防止有人恶意刷取积分,

以上就是积分微服务的实现

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

跳表:

Redis的跳表是一种有序数据结构,用于在有序集合中快速查找和插入元素。它是基于链表的扩展,通过在链表中添加多级索引来提高查找效率。

Redis 中,跳表被用于实现有序集合数据类型,它允许快速的按分数(score)进行范围查询和遍历操作。这使得 Redis 的有序集合能够高效地支持诸如排行榜、计分板等功能。

总之,Redis中使用跳表作为有序集合的实现之一,因为它能够在平均情况下提供较快的插入、删除和查找操作。

Pipeline:

Redis Pipeline是一种用于高性能技术,它可以一次执行多条命令,而不必等待每个命令的相应。这种技术被称为流水线,而且无论你运行那个版本,都可以使用流水线,与Redis一起使用。

        Redis Pipeline的主要优点就是可以大大的提高性能,他允许一次执行多条命令,而且不必等待每个命令的响应,因此它可以减少对网络延迟性能的影响,(例如:将许多元素添加到同一列表中,或者使用许多键填充数据库)。

总之,Redis中的Pipeline是一种批量执行命令的机制,允许客户端一次性发送多个命令给服务器,并在一次通信中获取所有命令的执行结果。这种机制可以减少通信的往返时间,提高系统的性能,特别适用于需要频繁与Redis服务器交互的场景。

Bitmap:

BitMap,即位图,使用每个位表示某种状态,适合处理整型的海量数据。本质上是哈希表的一种应用实现,原理也很简单,给定一个int整型数据,将该int整数映射到对应的位上,并将该位由0改为1

Redis中,bitmap底层还是基于String类型实现的, 存储数据是以二进制(bit位)为单位进行存储的

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值