一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种高并发场景下预约挂号号源更新的方法及系统与流程

2022-11-19 09:05:38 来源:中国专利 TAG:


1.本发明涉及高并发业务处理技术领域,具体地说是一种高并发场景下预约挂号号源更新的方法及系统。


背景技术:

2.现代社会,随着工作生活节奏越来越快,由于传统的现场挂号方式流程繁琐,效率低下,逐渐被网上挂号所取代。而预约挂号的意义不仅仅在于其方便性,更重要的是它使医疗资源配置更加高效合理,预约挂号让患者选择方便的就诊时间,有针对性、有目的性的去医院就诊,可以直接在线预约挂号自己想要选择的医生,可以使医院的门诊流量更合理,资源配置更科学。预约挂号改变了人们的就医方式,省去了人们排队挂号的时间,提高了就医效率,更科学的分配着医疗资源。而如何在高并发场景下保证系统的高性能和高可用性,是目前需要解决的一个至关重要的问题。


技术实现要素:

3.本发明的技术任务是针对以上不足之处,提供一种高并发场景下预约挂号号源更新的方法及系统,能够解决高并发场景下预约挂号号源更新的问题,既满足高可用的特性,也保证了号源更新的准确性。
4.本发明解决其技术问题所采用的技术方案是:
5.一种高并发场景下预约挂号号源更新的方法,包括号源的查询和号源的更新,在缓存中快速查询号源信息,降低号源数据库的查询压力;使用lua脚本进行更新,保证号源更新的原子性;
6.该方法的实现过程如下:
7.1)、将号源数据库中的号源信息完整的同步至缓存中;
8.2)、用户选择需预约的号源,从缓存中查询该号源是否还有余号,避免直接查询号源库,从而降低号源库的查询压力;
9.3)、将使用lua脚本更新后的号源同步更新至号源数据库中。
10.本方法能够解决高并发场景下的大量的用户请求的问题,采用缓存技术来降低高并发的压力;同时使用lua脚本实现原子性操作进行号源的更新,能够保证号源更新的原子性。避免高并发场景下对号源数据库压力过大,以及多个线程同时更新同一号源时号源数更新错误的问题。
11.优选的,所述缓存为redis缓存。
12.redis是一个高性能的key-value数据库。支持存储的value类型包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。且为了保证效率,数据都是缓存在内存中。另外,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实
现了master-slave(主从)同步。
13.优选的,所述用户选择需预约的号源,从缓存中查询该号源是否还有余号:
14.若有,则使用lua脚本对redis缓存中的号源进行更新;
15.若无,则返回号源已约满。
16.优选的,所述使用lua脚本对redis中的号源进行更新,先判断是否有余号,有余号,则号源减1;
17.lua脚本针对上述操作进行原子性操作,保证号源更新的一致性。
18.本发明还要求保护一种高并发场景下预约挂号号源更新的系统,包括号源查询模块和号源更新模块,
19.所述号源查询模块,在缓存中快速查询号源信息,降低号源数据库的查询压力;
20.所述号源更新模块,使用lua脚本进行更新,保证号源更新的原子性。
21.优选的,所述缓存为redis缓存。
22.优选的,所述用户选择需预约的号源,从缓存中查询该号源是否还有余号:
23.若有,则使用lua脚本对redis缓存中的号源进行更新;
24.若无,则返回号源已约满。
25.优选的,所述使用lua脚本对redis中的号源进行更新,先判断是否有余号,有余号,则号源减1;
26.lua脚本针对上述操作进行原子性操作,保证号源更新的一致性。
27.进一步的,该系统实现高并发场景下预约挂号号源更新的过程如下:
28.1)、将号源数据库中的号源信息完整的同步至缓存中;
29.2)、用户选择需预约的号源,从缓存中查询该号源是否还有余号,避免直接查询号源库,从而降低号源库的查询压力;
30.3)、将使用lua脚本更新后的号源同步更新至号源数据库中。
31.本发明还要求保护一种高并发场景下预约挂号号源更新的装置,该装置通过上述的高并发场景下预约挂号号源更新的方法实现号源的查询和号源的更新,在缓存中快速查询号源信息,并使用lua脚本进行更新:
32.将号源数据库中的号源信息完整的同步至缓存中;
33.用户选择需预约的号源,从缓存中查询该号源是否还有余号,避免直接查询号源库,从而降低号源库的查询压力;
34.将使用lua脚本更新后的号源同步更新至号源数据库中。
35.本发明的一种高并发场景下预约挂号号源更新的方法及系统与现有技术相比,具有以下有益效果:
36.本方法及系统可以满足高并发场景的应用,在缓存中快速查询号源信息,降低号源数据库的查询压力;使用lua脚本进行更新,保证了号源更新的原子性。既满足高可用的特性,也保证了号源更新的准确性。
附图说明
37.图1是本发明实施例提供的高并发场景下预约挂号号源更新的方法流程示图。
具体实施方式
38.本发明是实施例提供了一种高并发场景下预约挂号号源更新的方法,包括号源的查询和号源的更新,在缓存中快速查询号源信息,降低号源数据库的查询压力;使用lua脚本进行更新,保证号源更新的原子性;
39.该方法的实现过程如下:
40.1)、将号源数据库中的号源信息完整的同步至redis缓存中。
41.2)、用户选择需预约的号源,从redis缓存中查询该号源是否还有余号,避免直接查询号源库,从而降低号源库的查询压力:
42.若有,则使用lua脚本对redis缓存中的号源进行更新:先判断是否有余号,有余号,则号源减1;
43.lua脚本针对上述操作进行原子性操作,保证号源更新的一致性。
44.若无,则返回号源已约满。
45.3)、将使用lua脚本更新后的号源同步更新至号源数据库中。
46.redis是一个高性能的key-value数据库。支持存储的value类型包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。且为了保证效率,数据都是缓存在内存中。另外,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
47.本方法能够解决高并发场景下的大量的用户请求的问题,采用redis缓存技术来降低高并发的压力;同时使用redis lua脚本实现原子性操作进行号源的更新,能够保证号源更新的原子性。避免高并发场景下对号源数据库压力过大,以及多个线程同时更新同一号源时号源数更新错误的问题。
48.本发明实施例还提供了一种高并发场景下预约挂号号源更新的系统,包括号源查询模块和号源更新模块,
49.所述号源查询模块,在redis缓存中快速查询号源信息,降低号源数据库的查询压力;
50.所述号源更新模块,使用redis lua脚本进行更新,保证号源更新的原子性。
51.本系统通过号源查询模块和号源更新模块实现预约挂号号源更新的过程如下:
52.1)、将号源数据库中的号源信息完整的同步至redis缓存中。
53.2)、用户选择需预约的号源,从redis缓存中查询该号源是否还有余号,避免直接查询号源库,从而降低号源库的查询压力:
54.若有,则使用lua脚本对redis缓存中的号源进行更新:先判断是否有余号,有余号,则号源减1;
55.lua脚本针对上述操作进行原子性操作,保证号源更新的一致性。
56.若无,则返回号源已约满。
57.3)、将使用lua脚本更新后的号源同步更新至号源数据库中。
58.本发明实施例还提供一种高并发场景下预约挂号号源更新的装置,该装置通过上述的高并发场景下预约挂号号源更新的方法实现号源的查询和号源的更新,在redis缓存
中快速查询号源信息,并使用redis lua脚本进行更新,实现过程如下:
59.1)、将号源数据库中的号源信息完整的同步至redis缓存中。
60.2)、用户选择需预约的号源,从redis缓存中查询该号源是否还有余号,避免直接查询号源库,从而降低号源库的查询压力:
61.若有,则使用lua脚本对redis缓存中的号源进行更新:先判断是否有余号,有余号,则号源减1;
62.lua脚本针对上述操作进行原子性操作,保证号源更新的一致性。
63.若无,则返回号源已约满。
64.3)、将使用lua脚本更新后的号源同步更新至号源数据库中。
65.通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
66.除说明书所述的技术特征外,均为本专业技术人员的已知技术。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献