本技术涉及计算机,特别涉及一种账户的处理方法、装置、电子设备及计算机存储介质。
背景技术:
1、目前,在银行账务处理中,记账处理过程主要包括两部分,一是登记账务流水登记簿,二是更新账户的余额。为了保证账户不被其他请求影响数据的准确性,记账处理时,会先对账户的资源加锁,记账处理结束后释放锁。
2、但是,随着账务处理业务量的增大,账务数据库中的账户会在瞬间产生多个并发操作,但所有对应的并发的线程中只有一个线程能持有当前账户的资源锁,其他线程必须等待该锁被释放后再逐一进行记账处理,该账户会被频繁加锁释放锁,该账户成为热点账户,产生性能瓶颈点,热点账户带来的是性能问题,多笔交易需要给同一账户记账时,会产生一笔交易等待前一笔交易记账完成后才能接着记账,会产生锁等待引发事务超时。
技术实现思路
1、有鉴于此,本技术提供了一种账户的处理方法、装置、电子设备及计算机存储介质,有效解决高并发下的锁超时问题。
2、本技术第一方面提供了一种账户的处理方法,包括:
3、接收记账请求,判断redis是否可用;
4、若判断出redis可用,则从redis中对账户进行加锁,并读取redis账户余额;
5、根据记账分录计算得到账户的最新余额,并将所述账户的最新余额更新至redis中;
6、新增记账流水至数据库;
7、若判断出redis不可用,则触发更新账户主表余额组件,计算本次记账前数据库余额;其中,采用传统的记账方式,从数据库对账户进行加锁,然后读取账户余额,根据记账分录计算得到账户的最新余额,并更新账户解锁账户;
8、新增记账流水至数据库。
9、可选的,所述账户的处理方法,还包括:
10、接收查询请求,判断redis是否可用;
11、若判断出redis可用,则从redis中查询余额;
12、若判断出redis不可用,则触发更新账户主表余额组件,查询数据库账户余额。
13、可选的,账户的处理方法,还包括:
14、系统启动时,触发更新账户主表余额组件,更新数据库账户余额;
15、触发同步数据库账户余额到redis组件,将数据库中账户余额同步到redis。
16、可选的,账户的处理方法,还包括:
17、每到第一预定时间,更新账户主表余额组件;其中,所述第一预定时间为根据业务特点进行设定。
18、可选的,账户的处理方法,还包括:
19、每到第二预定时间,将数据库内余额更新到redis;其中,所述第二预定时间为根据业务特点进行设定;
20、比对数据库余额和redis余额是否一致;
21、若数据库余额和redis余额不一致,则记错误日志并发预警。
22、可选的,账户的处理方法,还包括:
23、每到第三预定时间,确定redis的可用状态;
24、若redis由可用变为不可用,更新数据库的redis状态为不可用,触发更新账户主表余额组件,更新数据库账户余额,并将记账模式切换为数据库模式;
25、若redis由不可用变为可用,更新数据库的redis状态为可用,触发更新账户主表余额组件,更新数据库账户余额,触发同步数据库账户余额到redis组件,将数据库余额全部同步到redis,并将记账模式切换为redis模式。
26、本技术第二方面提供了一种账户的处理装置,包括:
27、第一判断单元,用于接收记账请求,判断redis是否可用;
28、读取单元,用于若所述第一判断单元判断出redis可用,则从redis中对账户进行加锁,并读取redis账户余额;
29、第一更新单元,用于根据记账分录计算得到账户的最新余额,并将所述账户的最新余额更新至redis中;
30、新增单元,用于新增记账流水至数据库;
31、计算单元,用于若所述第一判断单元判断出redis不可用,则触发更新账户主表余额组件,计算本次记账前数据库余额;其中,采用传统的记账方式,从数据库对账户进行加锁,然后读取账户余额,根据记账分录计算得到账户的最新余额,并更新账户解锁账户。
32、可选的,账户的处理装置,还包括:
33、第二判断单元,用于接收查询请求,判断redis是否可用;
34、查询单元,用于若所述第二判断单元判断出redis可用,则从redis中查询余额;
35、所述查询单元,还用于若所述第二判断单元判断出redis不可用,则触发更新账户主表余额组件,查询数据库账户余额。
36、可选的,账户的处理装置,还包括:
37、第一触发单元,用于系统启动时,触发更新账户主表余额组件,更新数据库账户余额;
38、第二触发单元,用于触发同步数据库账户余额到redis组件,将数据库中账户余额同步到redis。
39、可选的,账户的处理装置,还包括:
40、第二更新单元,用于每到第一预定时间,更新账户主表余额组件;其中,所述第一预定时间为根据业务特点进行设定。
41、可选的,账户的处理装置,还包括:
42、第三更新单元,用于每到第二预定时间,将数据库内余额更新到redis;其中,所述第二预定时间为根据业务特点进行设定;
43、比对单元,用于比对数据库余额和redis余额是否一致;
44、预警单元,用于若数据库余额和redis余额不一致,则记错误日志并发预警。
45、可选的,账户的处理装置,还包括:
46、确定单元,用于每到第三预定时间,确定redis的可用状态;
47、第三触发单元,用于若redis由可用变为不可用,更新数据库的redis状态为不可用,触发更新账户主表余额组件,更新数据库账户余额,并将记账模式切换为数据库模式;
48、第四触发单元,用于若redis由不可用变为可用,更新数据库的redis状态为可用,触发更新账户主表余额组件,更新数据库账户余额,触发同步数据库账户余额到redis组件,将数据库余额全部同步到redis,并将记账模式切换为redis模式。
49、本技术第三方面提供了一种电子设备,包括:
50、一个或多个处理器;
51、存储装置,其上存储有一个或多个程序;
52、当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面任意一项所述的账户的处理方法。
53、本技术第四方面提供了一种计算机存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如第一方面任意一项所述的账户的处理方法。
54、由以上方案可知,本技术提供一种账户的处理方法、装置、电子设备及计算机存储介质,通过redis分布式锁保存账户余额信息,提高数据读写速率,减小事务执行时间,降低锁的持有时间来解决热表的锁超时问题。同时由于记账过程中任何的账务丢失都是不允许的,特针对redis崩溃的场景设计了redis和数据库的无缝切换。