CN112699152A - 一种基于OpenResty实现的缓存方法 - Google Patents
一种基于OpenResty实现的缓存方法 Download PDFInfo
- Publication number
- CN112699152A CN112699152A CN202110019652.XA CN202110019652A CN112699152A CN 112699152 A CN112699152 A CN 112699152A CN 202110019652 A CN202110019652 A CN 202110019652A CN 112699152 A CN112699152 A CN 112699152A
- Authority
- CN
- China
- Prior art keywords
- server
- request
- openresty
- data
- password
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 10
- 238000012795 verification Methods 0.000 claims description 19
- 239000000284 extract Substances 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 abstract description 5
- 230000008859 change Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据处理技术领域,尤其涉及一种基于OpenResty实现的缓存方法,本发明首先构建客户侧与服务侧,服务侧包括OpenResty服务器、源服务器和Redis内存数据库服务器,客户侧包括应用程序或者浏览器,通过HTTP/HTTPS与OpenResty服务器通信接收客户端的请求,OpenResty服务器接收客户端的请求提取请求中的关键字段,根据源服务器的工作状态和内存数据库服务器中相关数据的状态,确定将缓存在Redis内存数据库服务器中的数据返回给客户端;OpenResty服务器或是将请求发送给后端源服务器,然后将请求结果发送给客户端。本发明充分利用了用户名、密码等信息的慢变特征,即使服务器故障,仍然能够保证大部分正常请求的响应,大大提高服务器在流量高峰时段和意外故障情况下的服务能力,提高用户体验。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种基于OpenResty实现的缓存方法。
背景技术
面对大并发量和海量数据流请求导致用户访问体验下降问题,服务端经常采用缓存技术来解决。采用内存缓存机制,通过优先读取内存中的缓存数据以减少对数据库的访问次数,进而减轻数据库负载性能测试结果和用户体验反馈信息显示,该方法在大并发量访问时能极大地提高系统的吞吐量。目前一般的缓存策略是这样的:请求到达后,先查询缓存中有没有要的数据,如果有,就直接返回缓存中的数据。如果没有所要的数据,就发给后端服务器去查询数据库,并将后端服务器返回的请求结果返回给请求端,同时把请求结果放到缓存中。在账号认证服务中,密码等账号数据往往是缓慢变化的,多数甚至是很久都不会变化,所以,在实际的认证服务中,可以充分利用这一特点,跟缓存这一技术结合起来,获得高并发的同时,也可以保证更高的服务稳定性。
发明内容
本发明提出了一种基于OpenResty实现的缓存方法,包括如下步骤:
具体通过如下步骤实现:首先构建客户侧与服务侧,服务侧包括OpenResty服务器、源服务器和Redis内存数据库服务器,客户侧包括应用程序或者浏览器,通过HTTP/HTTPS与OpenResty服务器通信接收客户端的请求,OpenResty服务器接收客户端的请求提取请求中的关键字段,根据源服务器的工作状态和内存数据库服务器中相关数据的状态,确定将缓存在Redis内存数据库服务器中的数据返回给客户端;OpenResty服务器或是将请求发送给后端源服务器,然后将请求结果发送给客户端,同时根据规则对数据处理,将其发送给Redis内存数据库服务器。
进一步,具体包括以下步骤:
S1:OpenResty服务器接收客户端的请求提取请求中的关键字段;具体是处理请求URL,提取用户名和密码信息,分别以经过处理的用户名,用户名和密码作为Key,去Redis内存数据库服务器提取数据;其中对用户名和密码数据做哈希处理。
S2:判断Redis内存数据库服务器中是否存在处理后的以用户名和密码作为Key的数据;
S3:如果请求数据在Redis内存数据库服务器存在,则直接发送请求结果给客户端;
S4:如果请求数据在Redis内存数据库服务器不存在;则将请求发送给后端源服务器对原始的用户名和密码进行验证;对将请求发送给后端源服务器对原始的用户名和密码进行验证,验证证成功与否的判断,在配置文件中通过正则表达式指定,以保证判断的灵活性。
S5:如果验证成功,则将用户名处理后的数据作为Key,密码和当前时间,以及请求结果数据作为Value保存到Redis内存数据库服务器中;如果验证错误,则判断Redis内存数据库服务器是否错误;对认证失败和服务器内部错误的判定均通过配置文件中设置正则表达式指定。源服务器的处理延时也作为判定服务器故障的标准,如果延时比较大,超过一个限定值,在随后的时间内,如果用户名作为Key的数据存在,就把缓存的密码作为判定验证成功与否的依据。
S6:如果否,则将将用户名处理后的数据作为Key,密码和当前时间,以及请求结果数据作为Value保存到Redis内存数据库服务器中;如果是服务器内部错误,则再次判断Redis内存数据库服务器中处理后的用户名为Key的Value是否存在;
S7:如果存在,则判断密码与缓存的密码是否一致;如果不存在,则关闭当前请求;
S8:如果判断密码与缓存的密码是一致,则将请求结果发送给客户端;
S9:结束。
进一步,源服务器服务器的处理延时也可以作为判定服务器故障的标准,例如,如果延时比较大,超过一个限定值,那么在随后的一段时间内,如果用户名作为Key的数据存在,就把缓存的密码作为判定验证成功与否的依据,进行步骤S6的处理,不请求源服务器。在步骤S3和S6中,充分利用了用户名、密码等信息的慢变特征,即使服务器故障,仍然能够保证大部分正常请求的响应,可以大大提高服务器在流量高峰时段和意外故障情况下的服务能力,提高用户体验。
进一步,在步骤S2中,数据的过期时间设置为永久;数据的过期时间通过配置文件设置;具体的是采用ini文件,或者json文件等。以下已ini文件为例说明。login为接口名,yes对应于验证成功的判定正则表达式,no对应于验证失败的判定正则表达式,fail对应于服务器内部故障时的判定正则表达式,expired对应于用户名和密码作为key时的有效期。
本发明的优点与积极效果在于:本发明的方法,它根据后端服务器的返回数据和配置文件来缓存数据,并且根据后端服务器的响应状况来改变对缓存数据的利用。它可以充分利用缓存提高并发量。充分利用了用户名、密码等信息的慢变特征,即使服务器故障,仍然能够保证大部分正常请求的响应,可以大大提高服务器在流量高峰时段和意外故障情况下的服务能力,提高用户体验;本方法用于接口所请求的数据具有缓慢变化这一特征的所以缓存系统中。
附图说明
图1是本发明的数据处理方法流程图;
图2是本发明的系统结构流程图。
具体实施方式
以下将结合附图和具体实施例对本发明进行详细说明:本发明的一种基于OpenResty实现的缓存方法首先构建客户侧与服务侧,服务侧包括OpenResty服务器、源服务器和Redis内存数据库服务器,客户侧包括应用程序或者浏览器,通过HTTP/HTTPS与OpenResty服务器通信接收客户端的请求,OpenResty服务器接收客户端的请求提取请求中的关键字段,根据源服务器的工作状态和内存数据库服务器中相关数据的状态,确定将缓存在Redis内存数据库服务器中的数据返回给客户端;OpenResty服务器或是将请求发送给后端源服务器,然后将请求结果发送给客户端,同时根据规则对数据处理,将其发送给Redis内存数据库服务器。
本实施例中,具体包括以下步骤:
S1:OpenResty服务器接收客户端的请求提取请求中的关键字段;具体是处理请求URL,提取用户名和密码信息,分别以经过处理的用户名,用户名和密码作为Key,去Redis内存数据库服务器提取数据;其中对用户名和密码数据做哈希处理。
S2:判断Redis内存数据库服务器中是否存在处理后的以用户名和密码作为Key的数据;
S3:如果请求数据在Redis内存数据库服务器存在,则直接发送请求结果给客户端;
S4:如果请求数据在Redis内存数据库服务器不存在;则将请求发送给后端源服务器对原始的用户名和密码进行验证;对将请求发送给后端源服务器对原始的用户名和密码进行验证,验证证成功与否的判断,在配置文件中通过正则表达式指定,以保证判断的灵活性。
S5:如果验证成功,则将用户名处理后的数据作为Key,密码和当前时间,以及请求结果数据作为Value保存到Redis内存数据库服务器中;如果验证错误,则判断Redis内存数据库服务器是否错误;对认证失败和服务器内部错误的判定均通过配置文件中设置正则表达式指定。源服务器的处理延时也作为判定服务器故障的标准,如果延时比较大,超过一个限定值,在随后的时间内,如果用户名作为Key的数据存在,就把缓存的密码作为判定验证成功与否的依据。
S6:如果否,则将将用户名处理后的数据作为Key,密码和当前时间,以及请求结果数据作为Value保存到Redis内存数据库服务器中;如果是服务器内部错误,则再次判断Redis内存数据库服务器中处理后的用户名为Key的Value是否存在;
S7:如果存在,则判断密码与缓存的密码是否一致;如果不存在,则关闭当前请求;
S8:如果判断密码与缓存的密码是一致,则将请求结果发送给客户端;
S9:结束。
本实施例中,源服务器服务器的处理延时也可以作为判定服务器故障的标准,例如,如果延时比较大,超过一个限定值,那么在随后的一段时间内,如果用户名作为Key的数据存在,就把缓存的密码作为判定验证成功与否的依据,进行步骤S6的处理,不请求源服务器。在步骤S3和S6中,充分利用了用户名、密码等信息的慢变特征,即使服务器故障,仍然能够保证大部分正常请求的响应,可以大大提高服务器在流量高峰时段和意外故障情况下的服务能力,提高用户体验。
本实施例中,在步骤S2中,数据的过期时间设置为永久;数据的过期时间通过配置文件设置;具体的是采用ini文件,或者json文件等。以下已ini文件为例说明。login为接口名,yes对应于验证成功的判定正则表达式,no对应于验证失败的判定正则表达式,fail对应于服务器内部故障时的判定正则表达式,expired对应于用户名和密码作为key时的有效期。
以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。本发明未详细描述的技术、形状、构造部分均为公知技术。
Claims (6)
1.一种基于OpenResty实现的缓存方法,其特征在于,通过如下步骤实现:首先构建客户侧与服务侧,服务侧包括OpenResty服务器、源服务器和Redis内存数据库服务器,客户侧包括应用程序或者浏览器,通过HTTP/HTTPS与OpenResty服务器通信接收客户端的请求,OpenResty服务器接收客户端的请求提取请求中的关键字段,根据源服务器的工作状态和内存数据库服务器中相关数据的状态,确定将缓存在Redis内存数据库服务器中的数据返回给客户端;OpenResty服务器或是将请求发送给后端源服务器,然后将请求结果发送给客户端,同时根据规则对数据处理,将其发送给Redis内存数据库服务器。
2.根据权利要求1所述的一种基于OpenResty实现的缓存方法,其特征在于,具体包括以下步骤:
S1:OpenResty服务器接收客户端的请求提取请求中的关键字段;具体是处理请求URL,提取用户名和密码信息,分别以经过处理的用户名,用户名和密码作为Key,去Redis内存数据库服务器提取数据;
S2:判断Redis内存数据库服务器中是否存在处理后的以用户名和密码作为Key的数据;
S3:如果请求数据在Redis内存数据库服务器存在,则直接发送请求结果给客户端;
S4:如果请求数据在Redis内存数据库服务器不存在;则将请求发送给后端源服务器对原始的用户名和密码进行验证;
S5:如果验证成功,则将用户名处理后的数据作为Key,密码和当前时间,以及请求结果数据作为Value保存到Redis内存数据库服务器中;如果验证错误,则判断Redis内存数据库服务器是否错误;
S6:如果否,则将将用户名处理后的数据作为Key,密码和当前时间,以及请求结果数据作为Value保存到Redis内存数据库服务器中;如果是服务器内部错误,则再次判断Redis内存数据库服务器中处理后的用户名为Key的Value是否存在;
S7:如果存在,则判断密码与缓存的密码是否一致;如果不存在,则关闭当前请求;
S8:如果判断密码与缓存的密码是一致,则将请求结果发送给客户端;
S9:结束。
3.根据权利要求2所述的一种基于OpenResty实现的缓存方法,其特征在于:在步骤S1中对用户名和密码数据做哈希处理。
4.根据权利要求2所述的一种基于OpenResty实现的缓存方法,其特征在于:在步骤S4中,对将请求发送给后端源服务器对原始的用户名和密码进行验证,验证证成功与否的判断,在配置文件中通过正则表达式指定,以保证判断的灵活性。
5.根据权利要求2所述的一种基于OpenResty实现的缓存方法,其特征在于:在步骤S5中,对认证失败和服务器内部错误的判定均通过配置文件中设置正则表达式指定。
6.根据权利要求2所述的一种基于OpenResty实现的缓存方法,其特征在于:在步骤S5中,源服务器的处理延时也作为判定服务器故障的标准,如果延时比较大,超过一个限定值,在随后的时间内,如果用户名作为Key的数据存在,就把缓存的密码作为判定验证成功与否的依据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110019652.XA CN112699152A (zh) | 2021-01-07 | 2021-01-07 | 一种基于OpenResty实现的缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110019652.XA CN112699152A (zh) | 2021-01-07 | 2021-01-07 | 一种基于OpenResty实现的缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112699152A true CN112699152A (zh) | 2021-04-23 |
Family
ID=75513218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110019652.XA Pending CN112699152A (zh) | 2021-01-07 | 2021-01-07 | 一种基于OpenResty实现的缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699152A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064149A (zh) * | 2021-11-22 | 2022-02-18 | 首约科技(北京)有限公司 | 一种服务启动请求失败的降低方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103188248A (zh) * | 2011-12-31 | 2013-07-03 | 卓望数码技术(深圳)有限公司 | 基于单点登录的身份认证系统及方法 |
CN106790601A (zh) * | 2016-12-29 | 2017-05-31 | Tcl集团股份有限公司 | 服务地址的读取装置、系统和方法 |
CN108769083A (zh) * | 2018-08-01 | 2018-11-06 | 北京奇虎科技有限公司 | 基于分布式服务器的登录方法、装置及系统 |
CN109284089A (zh) * | 2018-08-30 | 2019-01-29 | 上海艾融软件股份有限公司 | 一种基于微服务技术的电商平台的实现系统及方法 |
CN110661826A (zh) * | 2018-06-28 | 2020-01-07 | 北京京东尚科信息技术有限公司 | 代理服务器端处理网络请求的方法和代理服务器 |
-
2021
- 2021-01-07 CN CN202110019652.XA patent/CN112699152A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103188248A (zh) * | 2011-12-31 | 2013-07-03 | 卓望数码技术(深圳)有限公司 | 基于单点登录的身份认证系统及方法 |
CN106790601A (zh) * | 2016-12-29 | 2017-05-31 | Tcl集团股份有限公司 | 服务地址的读取装置、系统和方法 |
CN110661826A (zh) * | 2018-06-28 | 2020-01-07 | 北京京东尚科信息技术有限公司 | 代理服务器端处理网络请求的方法和代理服务器 |
CN108769083A (zh) * | 2018-08-01 | 2018-11-06 | 北京奇虎科技有限公司 | 基于分布式服务器的登录方法、装置及系统 |
CN109284089A (zh) * | 2018-08-30 | 2019-01-29 | 上海艾融软件股份有限公司 | 一种基于微服务技术的电商平台的实现系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064149A (zh) * | 2021-11-22 | 2022-02-18 | 首约科技(北京)有限公司 | 一种服务启动请求失败的降低方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109587133B (zh) | 一种单点登录系统及方法 | |
CN112597472B (zh) | 单点登录方法、装置及存储介质 | |
US20060048214A1 (en) | Automated login session extender for use in security analysis systems | |
RU2595931C1 (ru) | Способ осуществления междоменного перехода, браузер и сервер доменных имен | |
CN110765484B (zh) | 一种征信数据处理方法及电子设备 | |
WO2014114998A1 (en) | User authentication | |
CN108234122B (zh) | 令牌校验方法和装置 | |
CN109639730A (zh) | 基于令牌的http无状态协议下信息系统数据接口认证方法 | |
CN110784450A (zh) | 一种基于浏览器的单点登录方法和装置 | |
CN111988295A (zh) | 一种数据库审计方法、装置、web服务器、数据库审计系统和存储介质 | |
WO2018024176A1 (zh) | 一种防止同一用户重复登录的装置和方法 | |
CN106878335B (zh) | 一种用于登录验证的方法及系统 | |
US12081650B2 (en) | Server side authentication | |
CN103841117A (zh) | 一种基于Cookie机制的JAAS登录方法和服务器 | |
CN110601832A (zh) | 一种数据访问方法及装置 | |
CN112699152A (zh) | 一种基于OpenResty实现的缓存方法 | |
CN112434054A (zh) | 一种审计日志的更新方法及装置 | |
CN103532989A (zh) | 文件数据的下载方法 | |
CN109829321B (zh) | 一种认证身份的方法、装置、设备及存储介质 | |
CN111708734A (zh) | 一种分布式系统的元数据访问方法、系统、设备以及介质 | |
CN115296877B (zh) | 一种jwt存储令牌失效与续期的方法 | |
CN111125653A (zh) | 一种基于Nginx和Redis的高并发统一认证的方法 | |
CN116010926A (zh) | 登陆认证方法、装置、计算机设备和存储介质 | |
CN107343028B (zh) | 一种基于http协议的通信方法及系统 | |
CN111984958B (zh) | 一种支持vnc双因子的认证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |