第五天业务

文章介绍了项目中通过使用Bitmap节省存储空间以处理签到记录,利用RabbitMQ实现积分功能的异步处理,以及Redis中的跳表、pipeline特性在数据结构和性能提升上的作用。
1 你们项目中签到为什么要使用bitmap

        在我们项目中,设计了每天签到积分系统,但是通过观察发现,每一条签到记录需要22个字节,且签到记录会很多,会浪费很多存储空间。为了节省存储空间,所以我们使用到了bitmap。

        在Redis中提供了bitmap的数据结构和相关命令,bitmap的底层还是基于String类型实现的,存储以二进制bit位为单位进行存储,且bitmap在处理大量数据统计和判断是,只占很少的一部分空间,且计算速度高效。

        这就是我们使用bitmap的原因。


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

        在我们的项目中,使用的是异步的方式,将原先的业务与积分业务进行解耦合,而要实现服务间的解耦合需要使用到RabbitMQ。

        首先在涉及到积分的代码块里使用MQ进行积分消息的代码发送,然后编写一个监听器,且涉及几种获取积分的方式,就需要几种监听器。最后根据接收到的消息内容,执行相应的积分增加或减少操作,并更新用户的积分信息。

        在我们的项目中使用RabbitMQ可以实现积分功能的异步处理,提高系统的可扩展性和性能。


3 Redis三大新面试点: 跳表、pipeline、bitmap
  1. 跳表(Skip List): 

        跳表是一种数据结构,用于实现有序集合(Set)。它通过在元素之间建立多级索引来加速查找操作,类似于多层楼梯,可以快速跳跃到目标元素。

        在Redis中,有序集合(Set)就是通过跳表来实现的。跳表允许快速的插入、删除和查找操作,时间复杂度为O(log n)。跳表的实现在Redis中是基于C语言的,通过跳表可以高效地实现有序集合的相关操作。

        2.Pipeline:

        Pipeline是Redis提供的一种机制,用于批量执行多个命令,减少客户端与服务器之间的通信开销。

        通过Pipeline,客户端可以将多个命令打包发送给服务器,服务器执行完所有命令后再将结果一次性返回给客户端,从而减少了网络延迟和通信开销。

        在需要批量执行多个命令时,使用Pipeline可以显著提高Redis的性能和吞吐量。

        3.Bitmap:

        Bitmap是一种位图数据结构,在Redis中通常用于处理大量的布尔值信息,例如用户的签到记录、在线状态等。

        在Redis中,Bitmap通常是通过字符串来实现的,每个位代表一个布尔值,可以进行位操作(AND、OR、NOT等)来实现各种位级别的操作。

        通过Bitmap,可以高效地存储和处理大量的布尔值信息,节省内存空间并提高处理效率。

        总的来说,Redis中的跳表、pipeline和bitmap都是非常重要的特性和数据结构,它们分别用于实现有序集合、批量命令执行和位图操作,为Redis提供了高效的数据存储和处理能力。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值