CN105138587B - 数据访问方法、装置和系统 - Google Patents

数据访问方法、装置和系统 Download PDF

Info

Publication number
CN105138587B
CN105138587B CN201510464268.5A CN201510464268A CN105138587B CN 105138587 B CN105138587 B CN 105138587B CN 201510464268 A CN201510464268 A CN 201510464268A CN 105138587 B CN105138587 B CN 105138587B
Authority
CN
China
Prior art keywords
data
lock
state
target data
time threshold
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.)
Active
Application number
CN201510464268.5A
Other languages
English (en)
Other versions
CN105138587A (zh
Inventor
沈建荣
谭国斌
窦锦帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiaomi Inc
Original Assignee
Xiaomi Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiaomi Inc filed Critical Xiaomi Inc
Priority to CN201510464268.5A priority Critical patent/CN105138587B/zh
Publication of CN105138587A publication Critical patent/CN105138587A/zh
Application granted granted Critical
Publication of CN105138587B publication Critical patent/CN105138587B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开是关于一种数据访问方法、装置和系统,属于通信领域。方法包括:接收用户设备发送的数据访问请求;根据数据访问请求,向缓存服务器发送缓存访问请求;接收缓存服务器发送的数据信息,数据信息包括第一目标数据;检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间;若第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,根据数据访问请求,在数据库获取第二目标数据;向缓存服务器发送第二目标数据,缓存服务器用于采用第二目标数据更新缓存服务器中存储的第一目标数据。本公开解决了数据访问效率较低,时延较长的问题,本公开实现了提高数据访问效率,减少访问时延的效果。本公开用于网页数据的访问。

Description

数据访问方法、装置和系统
技术领域
本公开涉及通信领域,特别涉及一种数据访问方法、装置和系统。
背景技术
当大量用户设备通过多个线程同时访问某个网站时,通常采用缓存服务器来给数据库分压,该缓存服务器存储数据库中的部分数据。但是,缓存服务器中的数据通常设置有有效存储时长,当任一数据的存储时长超过该有效存储时长,该数据将被缓存服务器删除,成为失效数据,当某一个时间段在缓存服务器同时生成了很多缓存数据时,在另一个时间段这些缓存数据将会同时失效,如果在失效期间有多个用户设备同时访问这些数据,则会造成多个线程同时去请求数据库,数据库压力会突然增大,这种现象称为“缓存过期产生的惊群现象”。
相关技术中,一般是通过限制访问数据库的线程个数或者给数据库加锁来缓解“缓存过期产生的惊群现象”给数据库带来的压力,其中,加锁后的数据库不处理多个线程的同时请求。
发明内容
为了解决相关技术中数据访问效率较低,时延较长的问题,本公开实施例提供了一种数据访问方法、装置和系统。所述技术方案如下:
根据本公开实施例的第一方面,提供一种数据访问方法,包括:
接收用户设备发送的用于请求目标数据的数据访问请求,所述数据访问请求包括:目标数据标识;
根据所述数据访问请求,向缓存服务器发送缓存访问请求,所述缓存访问请求包括:所述目标数据标识;
接收所述缓存服务器发送的数据信息,所述数据信息包括第一目标数据,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
若所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,根据所述数据访问请求,在数据库获取第二目标数据,所述第二目标数据为所述数据库中存储的所述目标数据标识指示的数据;
向所述缓存服务器发送所述第二目标数据,所述缓存服务器用于采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
本公开的第一方面,能够提高数据访问效率,减少访问时延。
结合第一方面,在第一种可实现方式中,所述数据信息中包括所述第一目标数据对应的目标数据锁的标识,
所述根据所述数据访问请求,在数据库获取第二目标数据,包括:
向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态,所述目标数据锁包括非锁定状态或锁定状态;
接收所述锁服务器发送的加锁响应;
若所述加锁响应指示允许第一线程对所述数据库进行访问,根据所述数据访问请求,在数据库获取所述第二目标数据,所述第一线程为当前时刻执行所述目标数据的访问过程的线程。
本公开第一方面的第一种可实现方式,能够限制访问数据库的线程的数量,减少数据库的压力。
结合第一种可实现方式,在第二种可实现方式中,所述方法还包括:
若所述加锁响应指示禁止所述第一线程访问所述数据库,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
本公开第一方面的第二种可实现方式,能够快速反馈用户设备想要访问的数据,减少时延。
结合第一方面,在第三种可实现方式中,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,
所述根据所述数据访问请求,在数据库获取第二目标数据,包括:
检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
若所述目标数据锁的状态为非锁定状态,根据所述数据访问请求,在数据库获取所述第二目标数据。
本公开第一方面的第三种可实现方式,能够有效获取第二数据,避免第一线程与其他线程的冲突
结合第一方面,在第四种可实现方式中,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,
所述检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,包括:
检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
若所述目标数据锁的状态为非锁定状态,检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间。
本公开第一方面的第四种可实现方式,能够减少检测步骤,简化数据访问流程。
结合第三种可实现方式或第四种可实现方式,在第五种可实现方式中,所述方法还包括:
若所述目标数据锁的状态为锁定状态,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
本公开第一方面的第五种可实现方式,能够快速反馈用户设备想要访问的数据,减少时延。
结合第三种可实现方式,在第六种可实现方式中,所述若所述目标数据锁的状态为非锁定状态,根据所述数据访问请求,在数据库获取所述第二目标数据,包括:
若所述目标数据锁的状态为非锁定状态,向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态;
接收所述锁服务器发送的加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程;
根据所述数据访问请求,在数据库获取所述第二目标数据。
本公开第一方面的第六种可实现方式,能够有效获取第二数据,避免第一线程与其他线程的冲突。
结合第一方面,在第七种可实现方式中,所述数据信息包括一个数组,所述数组包括两个键,一个键用于存储所述第一目标数据,另一个键用于存储所述第一目标数据的过期时刻,
所述检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,包括:
获取当前时刻与所述过期时刻的差值;
将所述差值与预设差值比较,所述预设差值为所述第二时间阈值与所述第一时间阈值之差;
若所述差值大于0且小于所述预设差值,确定所述第一目标数据的存储时长在所述第一时间阈值与所述第二时间阈值之间。
本公开第一方面的第七种可实现方式,能够准确检测数据是否超期,提高检测精度。
结合第二种可实现方式或第六种可实现方式,在第八种可实现方式中,
所述加锁请求还包括:所述第一线程的标识,所述方法还包括:
向所述锁服务器发送解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为锁定状态时,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同,若所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同,将所述目标数据锁的状态设置为非锁定状态。
本公开第一方面的第八种可实现方式,能够避免数据访问通道堵塞,保证数据有效获取。
根据本公开实施例的第二方面,提供一种数据访问方法,包括:
接收网页服务器发送的缓存访问请求,所述缓存访问请求包括:目标数据标识,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的;
根据所述目标数据标识生成数据信息,所述数据信息包括第一目标数据,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
向所述网页服务器发送所述数据信息;
接收所述网页服务器发送的第二目标数据,所述第二目标数据为所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求在数据库获取的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
本公开的第二方面,能够提高数据访问效率,减少访问时延。
结合第二方面,在第一种可实现方式中,所述方法还包括:
轮询所述缓存服务器中存储的数据,获取超期数据集合,所述超期数据集合中的数据的存储时长在所述第一时间阈值与所述第二时间阈值之间;
在所述数据库获取所述超期数据集合中每个数据对应的更新数据;
采用所述每个数据对应的更新数据更新所述每个数据。
本公开第二方面的第一种可实现方式,能够提高数据访问效率,减少访问时延。
结合第一种可实现方式,在第二种可实现方式中,所述在所述数据库获取所述超期数据集合中每个数据对应的更新数据,包括:
将所述超期数据集合中的数据按照超期时长降序排序;
按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
本公开第二方面的第二种可实现方式,能够保证超期时间长的数据提前更新,保证更新效率。
结合第一种可实现方式或第二种可实现方式,在第三种可实现方式中,所述轮询所述缓存服务器中存储的数据,获取超期数据集合,包括:
轮询所述缓存服务器中存储的数据,获取存储时长在所述第一时间阈值与所述第二时间阈值之间的数据,得到预选数据集合;
在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到所述超期数据集合。
本公开第二方面的第三种可实现方式,能够确定访问频率较高的超期数据,提高了数据更新的效率和准确性。
结合第二方面,在第四种可实现方式中,所述缓存服务器中记录有所述第一目标数据对应的目标数据锁的状态,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,所述方法还包括:
接收锁服务器发送的状态信息,所述状态信息是所述锁服务器在所述目标数据锁的状态变化后发送的,所述状态信息包括当前时刻所述目标数据锁的状态;
根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
本公开第二方面的第四种可实现方式,能够保证缓存服务器与锁服务器的数据锁的状态的同步,避免缓存服务器中数据锁的状态错误。
根据本公开实施例的第三方面,提供一种数据访问方法,包括:
接收网页服务器发送的加锁请求,所述加锁请求包括第一目标数据对应的目标数据锁的标识,所述第一目标数据为缓存服务器中存储的目标数据标识指示的数据,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述加锁请求是所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
检测所述目标数据锁的标识指示的目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
若所述目标数据锁的状态为非锁定状态,将所述目标数据锁的状态设置为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据访问过程的线程。
本公开的第三方面,能够限制访问数据库的线程的数量,减少数据库的压力。
结合第一方面,在第一种可实现方式中,所述方法还包括:
若所述目标数据锁的状态为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示禁止所述第一线程访问所述数据库。
本公开第三方面的第一种可实现方式,能够限制访问数据库的线程的数量,减少数据库的压力。
结合第一方面,在第二种可实现方式中,所述加锁请求还包括:所述第一线程的标识,所述方法还包括:
将所述第一线程的标识记录为对所述目标数据锁进行加锁的线程的标识;
接收所述网页服务器发送的解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识;
检测所述目标数据锁的状态;
若所述目标数据锁的状态为锁定状态,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同;
若所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同,将所述目标数据锁的状态设置为非锁定状态。
本公开第三方面的第二种可实现方式,能够避免数据访问通道堵塞,保证数据有效获取。
结合第三方面、第一种可实现方式或第二种可实现方式,在第三种可实现方式中,所述缓存服务器中记录有所述第一目标数据对应的目标数据锁的状态,
所述方法还包括:
在所述目标数据锁的状态变化后,向所述缓存服务器发送状态信息,所述状态信息包括当前时刻所述目标数据锁的状态,所述缓存服务器用于根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
本公开第三方面的第三种可实现方式,能够保证缓存服务器与锁服务器的数据锁的状态的同步,避免缓存服务器中数据锁的状态错误。
根据本公开实施例的第四方面,提供一种数据访问方法,包括:
轮询缓存服务器中存储的数据,获取超期数据集合,所述超期数据集合中的数据的存储时长在第一时间阈值与第二时间阈值之间,所述第一时间阈值小于所述第二时间阈值;
在数据库获取所述超期数据集合中每个数据对应的更新数据;
采用所述每个数据对应的更新数据更新所述缓存服务器中存储的所述每个数据。
本公开的第四方面,能够提高数据访问效率,减少访问时延。
结合第四方面,在第一种可实现方式中,所述在数据库获取所述超期数据集合中每个数据对应的更新数据,包括:
将所述超期数据集合中的数据按照超期时长降序排序;
按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
本公开第四方面的第一种可实现方式,能够保证超期时间长的数据提前更新,保证更新效率。
结合第四方面或第一种可实现方式,在第二种可实现方式中,所述轮询缓存服务器中存储的数据,获取超期数据集合,包括:
轮询所述缓存服务器中存储的数据,获取存储时长在所述第一时间阈值与所述第二时间阈值之间的数据,得到预选数据集合;
在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到所述超期数据集合。
本公开第四方面的第二种可实现方式,能够确定访问频率较高的超期数据,提高了数据更新的效率和准确性。
根据本公开实施例的第五方面,提供一种数据访问装置,包括:
第一接收模块,被配置为接收用户设备发送的用于请求目标数据的数据访问请求,所述数据访问请求包括:目标数据标识;
第一发送模块,被配置为根据所述数据访问请求,向缓存服务器发送缓存访问请求,所述缓存访问请求包括:所述目标数据标识;
第二接收模块,被配置为接收所述缓存服务器发送的数据信息,所述数据信息包括第一目标数据,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
检测模块,被配置为检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
获取模块,被配置为在所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求,在数据库获取第二目标数据,所述第二目标数据为所述数据库中存储的所述目标数据标识指示的数据;
第二发送模块,被配置为向所述缓存服务器发送所述第二目标数据,所述缓存服务器用于采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
结合第五方面,在第一种可实现方式中,所述数据信息中包括所述第一目标数据对应的目标数据锁的标识,所述获取模块,包括:
第一发送子模块,被配置为向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态,所述目标数据锁包括非锁定状态或锁定状态;
第一接收子模块,被配置为接收所述锁服务器发送的加锁响应;
第一获取子模块,被配置为在所述加锁响应指示允许第一线程对所述数据库进行访问时,根据所述数据访问请求,在数据库获取所述第二目标数据,所述第一线程为当前时刻执行所述目标数据的访问过程的线程。
结合第一种可实现方式,在第二种可实现方式中,所述装置还包括:
第三发送模块,被配置为在所述加锁响应指示禁止所述第一线程访问所述数据库时,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
结合第五方面,在第三种可实现方式中,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,所述获取模块,包括:
第一检测子模块,被配置为检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
第二获取子模块,被配置为在所述目标数据锁的状态为非锁定状态时,根据所述数据访问请求,在数据库获取所述第二目标数据。
结合第五方面,在第四种可实现方式中,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,所述检测模块,包括:
第二检测子模块,被配置为检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
第三检测子模块,被配置为在所述目标数据锁的状态为非锁定状态时,检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间。
结合第三种可实现方式或第四种可实现方式,在第五种可实现方式中,所述装置还包括:
第四发送模块,被配置为在所述目标数据锁的状态为锁定状态时,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
结合第三种可实现方式,在第六种可实现方式中,所述第二获取子模块,包括:
第二发送子模块,被配置在所述目标数据锁的状态为非锁定状态时,向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态;
第二接收子模块,被配置为接收所述锁服务器发送的加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程;
数据获取子模块,被配置为根据所述数据访问请求,在数据库获取所述第二目标数据。
结合第五方面,在第七种可实现方式中,所述数据信息包括一个数组,所述数组包括两个键,一个键用于存储所述第一目标数据,另一个键用于存储所述第一目标数据的过期时刻,
所述检测模块,包括:
第三获取子模块,被配置为获取当前时刻与所述过期时刻的差值;
比较子模块,被配置为将所述差值与预设差值比较,所述预设差值为所述第二时间阈值与所述第一时间阈值之差;
确定子模块,被配置为在所述差值大于0且小于所述预设差值时,确定所述第一目标数据的存储时长在所述第一时间阈值与所述第二时间阈值之间。
结合第二种可实现方式或第六种可实现方式,在第八种可实现方式中,
所述加锁请求还包括:所述第一线程的标识,所述装置还包括:
第五发送模块,被配置为在向所述锁服务器发送解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为锁定状态时,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同,若所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同,将所述目标数据锁的状态设置为非锁定状态。
根据本公开实施例的第六方面,提供一种数据访问装置,包括:
第一接收模块,被配置为接收网页服务器发送的缓存访问请求,所述缓存访问请求包括:目标数据标识,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的;
生成模块,被配置为根据所述目标数据标识生成数据信息,所述数据信息包括第一目标数据,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
发送模块,被配置为向所述网页服务器发送所述数据信息;
第二接收模块,被配置为接收所述网页服务器发送的第二目标数据,所述第二目标数据为所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求在数据库获取的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
第一更新模块,被配置为采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
结合第六方面,在第一种可实现方式中,所述装置还包括:
轮询模块,被配置为轮询所述缓存服务器中存储的数据,获取超期数据集合,所述超期数据集合中的数据的存储时长在所述第一时间阈值与所述第二时间阈值之间;
获取模块,被配置为在所述数据库获取所述超期数据集合中每个数据对应的更新数据;
第二更新模块,被配置为采用所述每个数据对应的更新数据更新所述每个数据。
结合第一种可实现方式,在第二种可实现方式中,所述获取模块,包括:
排序子模块,被配置为将所述超期数据集合中的数据按照超期时长降序排序;
获取子模块,被配置为按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
结合第一种可实现方式或第二种可实现方式,在第三种可实现方式中,所述轮询模块,包括:
轮询子模块,被配置为轮询所述缓存服务器中存储的数据,获取存储时长在所述第一时间阈值与所述第二时间阈值之间的数据,得到预选数据集合;
选择子模块,被配置为在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到所述超期数据集合。
结合第六方面,在第四种可实现方式中,所述缓存服务器中记录有所述第一目标数据对应的目标数据锁的状态,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,所述装置还包括:
第三接收模块,被配置为接收锁服务器发送的状态信息,所述状态信息是所述锁服务器在所述目标数据锁的状态变化后发送的,所述状态信息包括当前时刻所述目标数据锁的状态;
第三更新模块,被配置为根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
根据本公开实施例的第七方面,提供一种数据访问装置,包括:
第一接收模块,被配置为接收网页服务器发送的加锁请求,所述加锁请求包括第一目标数据对应的目标数据锁的标识,所述第一目标数据为缓存服务器中存储的目标数据标识指示的数据,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述加锁请求是所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
第一检测模块,被配置为检测所述目标数据锁的标识指示的目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
第一设置模块,被配置为在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程。
结合第七方面,在第一种可实现方式中,所述装置还包括:
第一发送模块,被配置为在所述目标数据锁的状态为锁定状态时,向所述网页服务器发送加锁响应,所述加锁响应指示禁止所述第一线程访问所述数据库。
结合第七方面,在第二种可实现方式中,所述加锁请求还包括:所述第一线程的标识,所述装置还包括:
记录模块,被配置为将所述第一线程的标识记录为对所述目标数据锁进行加锁的线程的标识;
第二接收模块,被配置为接收所述网页服务器发送的解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识;
第二检测模块,被配置为检测所述目标数据锁的状态;
比较模块,被配置为在所述目标数据锁的状态为锁定状态时,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同;
第二设置模块,被配置为在所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同时,将所述目标数据锁的状态设置为非锁定状态。
结合第三方面、第一种可实现方式或第二种可实现方式,在第三种可实现方式中,所述缓存服务器中记录有所述第一目标数据对应的目标数据锁的状态,所述装置还包括:
第二发送模块,被配置为在所述目标数据锁的状态变化后,向所述缓存服务器发送状态信息,所述状态信息包括当前时刻所述目标数据锁的状态,所述缓存服务器用于根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
根据本公开实施例的第八方面,提供一种数据访问装置,包括:
轮询模块,被配置为轮询缓存服务器中存储的数据,获取超期数据集合,所述超期数据集合中的数据的存储时长在第一时间阈值与第二时间阈值之间,所述第一时间阈值小于所述第二时间阈值;
获取模块,被配置为在数据库获取所述超期数据集合中每个数据对应的更新数据;
更新模块,被配置为采用所述每个数据对应的更新数据更新所述缓存服务器中存储的所述每个数据。
结合第八方面,在第一种可实现方式中,所述获取模块,包括:
排序子模块,被配置为将所述超期数据集合中的数据按照超期时长降序排序;
获取子模块,被配置为按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
结合第八方面或第一种可实现方式,在第二种可实现方式中,所述轮询模块,包括:
轮询子模块,被配置为轮询所述缓存服务器中存储的数据,获取存储时长在所述第一时间阈值与所述第二时间阈值之间的数据,得到预选数据集合;
选择子模块,被配置为在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到所述超期数据集合。
根据本公开实施例的第九方面,提供一种数据访问系统,所述系统包括:网页服务器、缓存服务器和数据库,
所述网页服务器包括:第五方面任一所述的数据访问装置;
所述缓存服务器包括:第六方面任一所述的数据访问装置。
结合第九方面,在第一种可实现方式中,所述系统还包括:锁服务器,所述锁服务器包括:第七方面任一所述的数据访问装置。
根据本公开实施例的第十方面,提供一种数据访问装置,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
接收用户设备发送的用于请求目标数据的数据访问请求,所述数据访问请求包括:目标数据标识;
根据所述数据访问请求,向缓存服务器发送缓存访问请求,所述缓存访问请求包括:所述目标数据标识;
接收所述缓存服务器发送的数据信息,所述数据信息包括第一目标数据,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
若所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,根据所述数据访问请求,在数据库获取第二目标数据,所述第二目标数据为所述数据库中存储的所述目标数据标识指示的数据;
向所述缓存服务器发送所述第二目标数据,所述缓存服务器用于采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
根据本公开实施例的第十一方面,提供一种数据访问装置,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
接收网页服务器发送的缓存访问请求,所述缓存访问请求包括:目标数据标识,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的;
根据所述目标数据标识生成数据信息,所述数据信息包括第一目标数据,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
向所述网页服务器发送所述数据信息;
接收所述网页服务器发送的第二目标数据,所述第二目标数据为所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求在数据库获取的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
根据本公开实施例的第十二方面,提供一种数据访问装置,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
接收网页服务器发送的加锁请求,所述加锁请求包括第一目标数据对应的目标数据锁的标识,所述第一目标数据为缓存服务器中存储的目标数据标识指示的数据,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述加锁请求是所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值;
检测所述目标数据锁的标识指示的目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
若所述目标数据锁的状态为非锁定状态,将所述目标数据锁的状态设置为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程。
根据本公开实施例的第十三方面,提供一种数据访问装置,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
轮询缓存服务器中存储的数据,获取超期数据集合,所述超期数据集合中的数据的存储时长在第一时间阈值与第二时间阈值之间,所述第一时间阈值小于所述第二时间阈值;
在数据库获取所述超期数据集合中每个数据对应的更新数据;
采用所述每个数据对应的更新数据更新所述缓存服务器中存储的所述每个数据。
根据本公开实施例的第十四方面,提供一种数据访问系统,所述系统包括:网页服务器、缓存服务器和数据库,
所述网页服务器包括:第十方面所述的数据访问装置;
所述缓存服务器包括:第十一方面所述的数据访问装置。
根据本公开实施例的第十四方面,提供所述系统还包括:锁服务器,所述锁服务器包括:第十二方面所述的数据访问装置。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开实施例提供的数据访问方法、装置和系统,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,网页服务器通过在数据库获取的第二目标数据来更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
为了更清楚地说明本公开的实施例,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开部分实施例中提供的数据访问方法所涉及的实施环境的示意图。
图2是根据一示例性实施例示出的一种数据访问方法的流程图。
图3是根据一示例性实施例示出的一种数据访问方法的流程图。
图4是根据一示例性实施例示出的一种数据访问方法的流程图。
图5是根据一示例性实施例示出的一种数据访问方法的流程图。
图6-1是根据另一示例性实施例示出的一种数据访问方法的流程图。
图6-2是根据另一示例性实施例示出的一种第一目标数据的存储状态示意图。
图6-3是根据另一示例性实施例示出的一种存储时长检测方法的流程图。
图6-4是根据一示例性实施例示出的一种超期数据的更新方法的流程图。
图6-5是根据一示例性实施例示出的一种获取超期数据集合的方法流程图。
图6-6是根据一示例性实施例示出的一种在数据库获取超期数据集合中每个数据对应的更新数据的方法流程图。
图6-7是根据一示例性实施例示出的根据数据访问请求,在数据库获取第二目标数据的方法的流程图。
图6-8是根据一示例性实施例示出的另一种根据数据访问请求,在数据库获取第二目标数据的方法的流程图。
图6-9是根据一示例性实施例示出的又一种根据数据访问请求,在数据库获取第二目标数据的方法的流程图。
图6-10是根据一示例性实施例示出的一种检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间的方法的流程图。
图6-11是根据一示例性实施例示出的一种数据访问方法流程图。
图7是根据一示例性实施例示出的一种数据访问方法的流程图。
图8-1是根据一示例性实施例示出的一种数据访问装置80的框图。
图8-2是图8-1示出的数据访问装置中获取模块805的框图。
图8-3是根据一示例性实施例示出的另一种数据访问装置80的框图。
图8-4是图8-1示出的数据访问装置中获取模块805的框图。
图8-5是图8-4示出的数据访问装置中第二获取子模块8055的框图。
图8-6是图8-1示出的数据访问装置中检测模块804的框图。
图8-7是根据一示例性实施例示出的又一种数据访问装置80的框图。
图8-8是图8-1示出的数据访问装置中检测模块804的框图。
图8-9是根据一示例性实施例示出的另一种数据访问装置80的框图。
图9-1是根据一示例性实施例示出的一种数据访问装置的框图。
图9-2是根据一示例性实施例示出的另一种数据访问装置的框图。
图9-3是图9-2示出的数据访问装置中获取模块907的框图。
图9-4是图9-2示出的数据访问装置中轮询模块906的框图。
图9-5是根据一示例性实施例示出的另一种数据访问装置90的框图。
图10-1是根据一示例性实施例示出的一种数据访问装置00的框图。
图10-2是根据一示例性实施例示出的另一种数据访问装置00的框图。
图10-3是根据一示例性实施例示出的又一种数据访问装置00的框图。
图10-4是根据一示例性实施例示出的再一种数据访问装置00的框图。
图11-1是根据一示例性实施例示出的一种数据访问装置1的流程图。
图11-2是图11-1示出的数据访问装置中获取模块12的框图。
图11-3是图11-1示出的数据访问装置中轮询模块11的框图。
图12是根据一示例性实施例示出的一种用于数据访问装置1200的框图。
图13是根据一示例性实施例示出的一种用于数据访问装置1300的框图。
图14是根据一示例性实施例示出的一种用于数据访问装置1400的框图。
图15是根据一示例性实施例示出的一种用于数据访问装置1500的框图。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部份实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
请参见图1,其示出了本公开部分实施例中提供的数据访问方法所涉及的实施环境的示意图。该实施环境可以包括:网页服务器110、锁服务器120、缓存服务器130和数据库140。
其中,网页服务器110、锁服务器120和缓存服务器130中任一服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心,该数据库140可以是一台服务器,或者由若干台服务器组成的服务器集群,用于进行数据的存储。
网页服务器110、锁服务器120和缓存服务器130两两之间可以通过有线网络或无线网络建立连接,网页服务器110与数据库140通过有线网络或无线网络建立连接,缓存服务器120与数据库140通过有线网络或无线网络建立连接,缓存服务器120用于缓存数据库140中的数据。
图2是根据一示例性实施例示出的一种数据访问方法的流程图,本实施例以该数据访问方法应用于图1所示实施环境中的网页服务器110来举例说明,该数据访问方法可以包括如下几个步骤:
在步骤201中,接收用户设备发送的用于请求目标数据的数据访问请求,数据访问请求包括:目标数据标识。
在步骤202中,根据数据访问请求,向缓存服务器发送缓存访问请求,该缓存访问请求包括:目标数据标识。
在步骤203中,接收缓存服务器发送的数据信息,该数据信息包括第一目标数据,该第一目标数据为缓存服务器中存储的目标数据标识指示的数据。
在步骤204中,检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,该第一目标数据的存储时长为当前时刻与第一目标数据最近一次更新的时刻之差,第一时间阈值小于第二时间阈值。
在步骤205中,若第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,根据数据访问请求,在数据库获取第二目标数据,第二目标数据为数据库中存储的目标数据标识指示的数据。
在步骤206中,向缓存服务器发送第二目标数据,该缓存服务器用于采用第二目标数据更新缓存服务器中存储的第一目标数据。
综上所述,本公开实施例提供的数据访问方法,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,网页服务器通过在数据库获取的第二目标数据来更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
图3是根据一示例性实施例示出的一种数据访问方法的流程图,本实施例以该数据访问方法应用于图1所示实施环境中的缓存服务器130来举例说明,该数据访问方法可以包括如下几个步骤:
在步骤301中,接收网页服务器发送的缓存访问请求,该缓存访问请求包括:目标数据标识,目标数据标识为用户设备向网页服务器发送的用于请求目标数据的数据访问请求中携带的。
在步骤302中,根据目标数据标识生成数据信息,该数据信息包括第一目标数据,第一目标数据为缓存服务器中存储的目标数据标识指示的数据。
在步骤303中,向网页服务器发送数据信息。
在步骤304中,接收网页服务器发送的第二目标数据,该第二目标数据为网页服务器在检测第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据数据访问请求在数据库获取的,该第一目标数据的存储时长为当前时刻与第一目标数据最近一次更新的时刻之差,第一时间阈值小于第二时间阈值。
在步骤305中,采用第二目标数据更新缓存服务器中存储的第一目标数据。
综上所述,本公开实施例提供的数据访问方法,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,缓存服务器通过网页服务器在数据库获取的第二目标数据来更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
图4是根据一示例性实施例示出的一种数据访问方法的流程图,本实施例以该数据访问方法应用于图1所示实施环境中的锁服务器120来举例说明,该数据访问方法可以包括如下几个步骤:
在步骤401中,接收网页服务器发送的加锁请求,该加锁请求包括第一目标数据对应的目标数据锁的标识,该第一目标数据为缓存服务器中存储的目标数据标识指示的数据,该目标数据标识为用户设备向网页服务器发送的用于请求目标数据的数据访问请求中携带的,加锁请求是网页服务器在检测第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,第一目标数据的存储时长为当前时刻与第一目标数据最近一次更新的时刻之差,第一时间阈值小于第二时间阈值。
在步骤402中,检测目标数据锁的标识指示的目标数据锁的状态,该目标数据锁的状态包括非锁定状态或锁定状态。
在步骤403中,若目标数据锁的状态为非锁定状态,将目标数据锁的状态设置为锁定状态,向网页服务器发送加锁响应,加锁响应指示允许第一线程对数据库进行访问,第一线程为当前时刻执行目标数据的访问过程的线程。
综上所述,本公开实施例提供的数据访问方法,锁服务器在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,根据加锁请求,在目标数据锁的状态为非锁定状态,将目标数据锁的状态设置为锁定状态,使除当前时刻执行目标数据的访问过程的线程之外的其它线程无法从数据库获取目标数据锁对应的数据,避免不同线程在数据库中对同一数据的重复获取,相应避免了对缓存数据库中同一数据的重复更新,减少了不必要的操作流程。
图5是根据一示例性实施例示出的一种数据访问方法的流程图,本实施例以该数据访问方法应用于图1所示实施环境中的缓存服务器130来举例说明,实际应用中,该数据访问方法也可以应用于其他装置或服务器上,该数据访问方法可以包括如下几个步骤:
在步骤501中,轮询缓存服务器中存储的数据,获取超期数据集合,该超期数据集合中的数据的存储时长在第一时间阈值与第二时间阈值之间,第一时间阈值小于第二时间阈值。
在步骤502中,在数据库获取超期数据集合中每个数据对应的更新数据。
在步骤503中,采用每个数据对应的更新数据更新缓存服务器中存储的每个数据。
综上所述,本公开实施例提供的数据访问方法,通过获取缓存服务器中的存储时长在第一时间阈值与第二时间阈值之间的数据的超期数据集合,在数据库获取超期数据集合中每个数据对应的更新数据,并采用每个数据对应的更新数据更新缓存服务器中存储的每个数据,这样进行数据更新后,缓存服务器中的原来存储的超期数据集合中的数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
图6-1是根据另一示例性实施例示出的一种数据访问方法的流程图,本实施例以该数据访问方法应用于图1所示实施环境中来举例说明,该数据访问方法可以包括如下几个步骤:
在步骤601中,网页服务器接收用户设备发送的用于请求目标数据的数据访问请求,该数据访问请求包括:目标数据标识。
本公开实施例中,用户设备可以是手机、平板电脑、膝上型便携计算机和台式计算机等等,用户设备能够进行网页服务器提供的网页的访问。
在步骤602中,网页服务器根据数据访问请求,向缓存服务器发送缓存访问请求,该缓存访问请求包括:目标数据标识。
用户设备在进行网页数据的访问时,需要通过网页服务器获取相应的数据,数据访问系统中的所有数据通常都存储在数据库中,一部分常用数据也可以由缓存服务器缓存,因此,网页服务器通常先访问缓存服务器,若缓存服务器未存储相应的数据,再去访问缓存服务器,这样可以以减少服务器的访问压力。
在步骤603中,缓存服务器根据目标数据标识生成数据信息,该数据信息包括第一目标数据,该第一目标数据为缓存服务器中存储的目标数据标识指示的数据。
本公开实施例中,缓存服务器中的数据可以以数组形式存储,每个数组包括两个键,一个键用于存储数据,另一个键用于存储该数据的相关信息,如该数据的过期时刻。因此,缓存服务器向网页服务器发送的数据信息可以包括一个数组,该数组包括两个键,一个键用于存储该第一目标数据,另一个键用于存储该第一目标数据的相关信息,如过期时刻。如表1所示,表1是第一目标数据对应的数组的例子,该数组的两个键分别为键1和键2,键1存储有第一目标数据,键2存储有过期时刻,该过期时刻为10:10。
表1
缓存服务器中每个数据都需要定期的更新或删除,因此,数据会有相应的有效存储时长,本公开实施例中,可以采用第一时间阈值指示数据的有效存储时长,即该第一时间阈值可以用于指示第一目标数据的有效存储时长。而过期时刻用于指示数据到达有效存储时长的时刻。
例如,有效存储时长为10min(分钟),则第一时间阈值为10min,假设数据x在9:00存储在缓存服务器中,则该数据的过期时刻为9:10。
在步骤604中,缓存服务器向网页服务器发送数据信息。
在步骤605中,网页服务器检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间。
该第一目标数据的存储时长为当前时刻与第一目标数据最近一次更新的时刻之差,示例的,假设当前时刻为10:00,而第一目标数据最近一次更新的时刻为9:59,则第一目标数据的存储时长为10:00与9:59的时间差,即1min。
相关技术中,通常缓存服务器中的所有数据的有效存储时长相同,任一数据的存储时长超过该有效存储时长,就删除该数据,避免一些长期不使用的数据占用缓存数据的空间,但是一些访问频率较高的数据的存储时长超过该有效存储时长,也会被相应的删除,此时称之为该数据在缓存服务器中失效,如果在该数据失效期间,有多个用户设备通过线程同时访问这个数据,由于缓存服务器的数据已失效,会造成多个线程同时去请求数据库,数据库压力会突然增大。例如,相关技术中,数据x的有效存储时长为10min,数据x最近一次更新的时刻为10:00,则在10:10之后,缓存服务器删除该数据x,该数据x则为失效数据,如果有多个线程在短时间内访问数据x,需要去数据库获取该数据x。
本公开实施例中,该第一时间阈值小于第二时间阈值。第一时间阈值和第二时间阈值中任一值可以作为数据的有效存储时长。
本公开实施例中,可以采用第一时间阈值指示数据的有效存储时长,即该第一时间阈值可以用于指示第一目标数据的有效存储时长,第二时间阈值用于表示虚拟存储时长,这个虚拟存储时长比有效存储时长要长。任一数据的存储时长超过该第一时间阈值,但未超过第二时间阈值,还会存储在缓存服务器中,这段时间可以认为是一个缓冲时间段,若该数据的访问频率较高,可以由网页服务器或缓存服务器去数据库获取与该任一数据相应的数据,进行缓存数据库中的该任一数据的更新。如果该数据的存储时长超过该第二时间阈值,也即在缓冲时间段之内,缓存服务器没有对该数据进行更新,则对数据进行删除,此时,该数据才失效。例如,数据x的有效存储时长为10min,即第一时间阈值为10min,第二时间阈值比第一时间阈值大300s(秒),即5min。数据x最近一次更新的时刻为10:00,则在10:10之后,缓存服务器继续存储该数据x直至10:15,如果10:10至10:15之间,网页服务器收到对数据x的访问请求,网页服务器可以去数据库获取与该数据x相应的数据,由缓存服务器进行数据x的更新,然后重新开始存储时长的计时。这样可以通过对缓存延迟失效来达到缓存服务器持续提供服务的能力。
本公开实施例中,也可以采用第二时间阈值指示数据的有效存储时长,即该第二时间阈值可以用于指示第一目标数据的有效存储时长,而第一时间阈值用于指示缓存更新触发时刻。任一数据的存储时长超过该第一时间阈值,若该数据的访问频率较高,可以由网页服务器或缓存服务器去数据库获取与该任一数据相应的数据,进行缓存数据库中的该任一数据的更新。如果该数据的存储时长超过该第二时间阈值,缓存服务器没有对该数据进行更新,则对数据进行删除,此时,该数据才失效。例如,数据x的有效存储时长为10min,即第二时间阈值为10min,第二时间阈值比第一时间阈值大300s(秒),即5min。数据x最近一次更新的时刻为10:00,则缓存服务器存储该数据x至10:10,如果10:05至10:10之间,网页服务器收到对数据x的访问请求,网页服务器可以去数据库获取与该数据x相应的数据,由缓存服务器进行数据x的更新,然后重新开始存储时长的计时。这样可以通过对缓存提前更新来达到缓存服务器持续提供服务的能力。
本公开实施例中,采用第一时间阈值指示数据的有效存储时长为例进行说明,第一目标数据可以存在多种存储状态,如图6-2所示,图6-2是根据另一示例性实施例示出的一种第一目标数据的存储状态示意图,假设第一时间阈值为10min,第二时间阈值为15min,第一目标数据最近一次更新的时刻A为10:00,则第一目标数据的实际过期时刻B为10:10,虚拟过期时刻C为10:15,若当前时刻在AB之间,则说明第一目标数据未过期,若当前时刻在BC之间,则说明第一目标数据实际上过期了,但是缓存服务器还没有对其进行删除,即已过期,但未被删除,若当前时刻在C之后,如图6-2中,CD之间,D是C之后的任一时刻,则说明第一目标数据已被删除,即缓存服务器未存储该第一目标数据,该第一目标数据失效,实际应用中,在第一目标数据被删除后,网页服务器是不会收到缓存服务器发送的数据信息的。
一方面,网页服务器可以获取第一目标数据最近一次更新的时刻来检测存储时长。例如,缓存服务器向网页服务器发送数据信息可以包括:第一目标数据最近一次更新的时刻,则网页服务器直接根据当前时刻与第一目标数据最近一次更新的时刻计算出第一目标数据的存储时长,再通过第一目标数据的存储时长与第一时间阈值、第二时间阈值进行比较,检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间。
其中,缓存服务器发送的数据信息可以包括一个数组,该数组包括两个键,一个键用于存储该第一目标数据,另一个键用于存储该第一目标数据最近一次更新的时刻。如表2所示,表2是第一目标数据对应的另一数组的例子,该数组的两个键分别为键1和键2,键1存储有第一目标数据,键2存储有第一目标数据最近一次更新的时刻,该最近一次更新的时刻为9:00。
表2
另一方面,网页服务器无需获取第一目标数据最近一次更新的时刻,可以通过进行差值比较来检测存储时长。则缓存服务器发送的数据信息可以如表1所示。
示例的,图6-3是根据另一示例性实施例示出的一种存储时长检测方法的流程图,该方法包括:
在子步骤6051中,获取当前时刻与过期时刻的差值。
假设第一目标数据的过期时刻为10:10,而当前时刻为10:12,则当前时刻与过期时刻的差值为2min。
在子步骤6052中,将该差值与预设差值比较,该预设差值为第二时间阈值与第一时间阈值之差。
假设第二时间阈值比第一时间阈值大5min,则预设差值为5min,可以将当前时刻与过期时刻的差值2min与5min进行比较。
在子步骤6053中,若差值大于0且小于预设差值,确定第一目标数据的存储时长在第一时间阈值与第二时间阈值之间。
示例的,2min大于0,且小于5min,则可以确定第一目标数据的存储时长在第一时间阈值与第二时间阈值之间。
在步骤606中,若第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,网页服务器根据数据访问请求,在数据库获取第二目标数据,第二目标数据为数据库中存储的目标数据标识指示的数据。
若第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,说明第一目标数据实际上已经过期,只是缓存服务器还没有进行更新或删除,此时网页服务器应该获取能够更新该第一目标数据的数据,并指示缓存服务器对该第一目标数据进行及时更新,此时,网页服务器可以去数据库获取目标数据标识指示的数据作为第二目标数据,该第二目标数据可以与第一目标数据相同,也可以不同,但是它们的标识是相同的,均为目标数据标识,该第二目标数据是数据库存储的目标数据标识对应的最新的数据,可以用来更新缓存服务器中存储的第一目标数据。
在步骤607中,网页服务器向缓存服务器发送第二目标数据。
在步骤608中,缓存服务器采用第二目标数据更新缓存服务器中存储的第一目标数据。
本公开实施例中,采用第二目标数据对第一目标数据进行更新的过程,实际为第二目标数据覆盖或替换第一目标数据的过程,更新之后,原来存储第一目标数据的位置存储了第二目标数据。由于缓存服务器采用第二目标数据对第一目标数据进行了及时更新,因此缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生。
在步骤609中,缓存服务器进行超期数据的更新。
在本公开实施例中,缓存服务器可以自动对超期数据(即超出有效存储时长的数据)进行更新,进一步避免缓存过期现象的产生,示例的,图6-4是根据一示例性实施例示出的一种超期数据的更新方法的流程图,该方法包括:
在子步骤6091中,轮询缓存服务器中存储的数据,获取超期数据集合,该超期数据集合中的数据的存储时长在第一时间阈值与第二时间阈值之间。
一方面,缓存服务器可以直接轮询缓存服务器中存储的数据,将存储时长在第一时间阈值与第二时间阈值之间的数据组成超期数据集合。
另一方面,如图6-5所示,图6-5是根据一示例性实施例示出的一种获取超期数据集合的方法流程图,该方法包括:
在子步骤6091a中,轮询缓存服务器中存储的数据,获取存储时长在第一时间阈值与第二时间阈值之间的数据,得到预选数据集合。
缓存服务器可以对该缓存服务器中存储的数据进行依次检测,检测每个数据的存储时长是否在第一时间阈值与第二时间阈值之间,由于缓存服务器还可以存储数据最近一次更新的时刻或者数据的过期时刻,因此,对每个数据的存储时长的检测过程可以参考步骤605,本公开实施例对此不再赘述。
在子步骤6091b中,在预选数据集合中选择访问频率大于预设访问阈值的数据,得到超期数据集合。
访问频率指的是数据被访问的频率,也即预设时间段内,数据访问请求次数较多的数据,通过在预选数据集合中选择访问频率大于预设访问阈值的数据,可以得到一些访问频率较高的数据。预设时间段为10min,假设预选数据集合包括数据1,数据2和数据3,在预设时间段内,数据1的访问频率为10,数据2的访问频率为5,数据3的访问频率为6,而预设访问阈值为7,则确定的超期数据集合中包括数据1,那么数据2和数据3在存储时长大于第二时间阈值后,进行删除,可以释放一些使用频率较低的数据,减少缓存服务器的负荷。
在子步骤6092中,在数据库获取超期数据集合中每个数据对应的更新数据。
如图6-6所示,图6-6是根据一示例性实施例示出的一种在数据库获取超期数据集合中每个数据对应的更新数据的方法流程图,该方法包括:
在子步骤6092a中,将超期数据集合中的数据按照超期时长降序排序。
将超期数据集合中的数据按照超期时长降序排序即将超期数据集合中的数据按照超期时由大到小排序,超期时长是指当前时刻与数据的超期时刻的差值,该超期时长小于第二时间阈值与第一时间阈值的差值。
在子步骤6092b中,按照排序的顺序依次在数据库获取每个数据对应的更新数据。
在本公开实施例中,通过将超期数据集合中的数据按照超期时长降序排序可以保证超期时长较长的数据能够优先获取,相应的超期时间长的数据可以提前更新,保证更新效率,防止数据因超期被删除,减少缓存过期现象的产生。
在子步骤6093中,采用每个数据对应的更新数据更新每个数据。
在本公开实施例中,可以在每次获取更新数据后,就更新相应的数据,也可以在获取了超期数据集合中的数据对应的所有更新数据后,再进行数据的更新,本公开实施例对此不做赘述。
线程,也称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程通常由线程标识(英文:Identification;简称:ID)、当前指令指针,寄存器集合和堆栈组成,其中,指令指针也称程序计数器(英文:program counter;简称:PC)。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。线程包括就绪、阻塞和运行三种基本状态。运行状态是指线程占有处理机,正在运行,每一个程序都至少有一个线程,本公开实施例中,网页服务器执行目标数据的获取过程,实际上是由相应的线程执行的。
实际应用中,同一时刻可能存在多个线程对同一数据进行访问,若该数据的存储时长在第一时间阈值与第二时间阈值之间,则需要在数据库获取相应的数据进行更新,而如果每个访问该数据的线程都去数据库进行数据的获取来触发缓存服务器进行数据更新,一方面访问数据库的线程较多,造成了数据库的压力,另一方面也出现了不必要的动作,产生了资源的浪费。因此,本公开实施例中,可以通过锁服务器使用数据锁来限定针对同一数据,对数据库的访问次数,避免对数据库造成的压力,减少不必要的动作。
锁服务器使用数据锁可以有多种,本公开实施例假设当前时刻执行目标数据的访问过程的线程为第一线程,通过以下几种进行示意性说明:
第一方面,在步骤603中,缓存服务器中的数据可以以数组形式存储,每个数组包括两个键,一个键用于存储数据,另一个键用于存储该数据的相关信息,该相关信息可以包括数据锁的标识、数据的过期时刻等等。因此,缓存服务器生成的数据信息中可以包括第一目标数据对应的目标数据锁的标识、第一目标数据的过期时刻等等。如表3所示,表3是第一目标数据对应的数组的例子,该数组的两个键分别为键1和键2,键1存储有第一目标数据,键2存储有相关数据,这些相关数据按照预设顺序存储,示例的,该相关数据包括:过期时刻和目标数据锁的标识,如表3所示,该过期时刻为10:10,目标数据锁的标识为001。
表3
相应的,步骤606中,网页服务器可以先对数据锁加锁,然后再进行数据访问,图6-7是根据一示例性实施例示出的一种根据数据访问请求,在数据库获取第二目标数据的方法的流程图,该方法可以包括如下几个步骤:
在子步骤6061中,网页服务器向锁服务器发送加锁请求,该加锁请求包括目标数据锁的标识。
缓存服务器中,每个需要加锁的数据都可以对应一个数据锁,实际应用中,缓存服务器中的所有数据中每个数据都配置一个相应的数据锁,每个数据锁都有对应的标识,通常是缓存服务器每存储一个新的数据,即向锁服务器发送数据锁请求,锁服务器根据该数据锁请求为该数据分配一个数据锁,并为该数据锁设置唯一的标识,将该数据锁的标识发送给缓存服务器,由缓存服务器在该新的数据的相关信息中记录该数据锁的标识。
相应的,目标数据锁的标识用于唯一标识该目标数据锁,锁服务器根据该目标数据锁的标识即可确定存储目标数据锁的位置。示例的,该目标数据锁的标识可以为001。
在子步骤6062中,锁服务器检测目标数据锁的标识指示的目标数据锁的状态,该目标数据锁的状态包括非锁定状态或锁定状态。
锁服务器可以以数据锁列表的形式存储多个数据锁和数据锁的状态,表4为一示例的数据锁列表,其中,标识为001的数据锁的状态为非锁定状态,说明当前时刻没有线程对该数据锁进行加锁处理,如果锁服务器接收到针对该数据锁的加锁请求,即可对该数据锁加锁,即将该数据锁的状态设置成锁定状态,标识为010的数据锁的状态为锁定状态,说明当前时刻已有线程对该数据锁进行了加锁处理,标识为011的数据锁的状态为锁定状态,说明当前时刻已有线程对该数据锁进行了加锁处理,处于锁定状态的数据锁所对应的数据,除锁定该数据锁的线程外,后续的线程被禁止在服务器获取相应的数据,因此在本公开实施例中,只有对数据锁加锁的线程才有权在数据库获取相应数据,其他线程是被禁止访问数据库的,直至数据锁解锁后,才会由其他线程来执行加锁处理和数据库的访问过程,当前时刻第一线程的后续的线程不会对数据库再进行访问,这样减小了数据库的压力。实际应用中,数据锁列表中各个数据锁的状态可以由特定标识来指示,如0指示锁定状态,1指示非锁定状态,本公开实施例对此不作限定。
表4
数据锁的标识 数据锁的状态
001 非锁定
010 锁定
011 锁定
在子步骤6063中,若目标数据锁的状态为非锁定状态,锁服务器将目标数据锁的状态设置为锁定状态,向网页服务器发送加锁响应,该加锁响应指示允许第一线程对数据库进行访问
其中,第一线程为当前时刻执行目标数据的访问过程的线程。
假设目标数据锁的标识为001,则锁服务器查询表4可以确定该目标数据锁的状态为非锁定状态。
若目标数据锁的状态为非锁定状态,说明当前时刻没有线程对该数据锁进行加锁处理,锁服务器接收到针对该目标数据锁的加锁请求,则可以将该目标数据锁的状态设置为锁定状态,实现对目标数据锁的加锁,这样除第一线程外的其它线程再发送针对该目标数据锁的加锁请求后,锁服务器就不再执行对目标数据锁的加锁处理了,网页服务器通过第一线程发送对目标数据锁的加锁请求,触发锁服务器进行数据锁的加锁的过程,可以称为第一线程对目标数据锁的加锁处理过程,锁服务器可以通过向网页服务器发送加锁响应来指示完成该第一线程对目标数据锁的加锁处理的过程,允许第一线程对数据库进行访问。
在子步骤6064中,若目标数据锁的状态为锁定状态,锁服务器向网页服务器发送加锁响应,加锁响应指示禁止第一线程访问数据库,该其他线程为除第一线程之外的线程。
若目标数据锁的状态为锁定状态,说明当前时刻已有除第一线程之外的线程对该数据锁进行了加锁处理,锁服务器可以通过向网页服务器发送加锁响应来指示其他线程对目标数据锁进行了加锁处理,禁止第一线程访问数据库。
在子步骤6065中,网页服务器检测加锁响应指示的信息。
网页服务器可以根据加锁响应确定是否通过第一线程访问数据库。
在子步骤6066中,若加锁响应指示允许第一线程对数据库进行访问,网页服务器根据数据访问请求,在数据库获取第二目标数据。
若加锁响应指示允许第一线程对数据库进行访问,说明第一线程可以去数据库获取目标数据标识对应的第二目标数据,该第二目标数据可以与第一目标数据相同,也可以与第一目标数据不同。
在子步骤6067中,若加锁响应指示禁止第一线程访问数据库,网页服务器向用户设备发送数据访问响应,该数据访问响应包括第一目标数据。
若加锁响应指示禁止第一线程访问数据库,说明第一线程没有权限去数据库获取目标数据标识对应的第二目标数据,第一线程可以直接获取第一目标数据来反馈给用户设备,这样可以保证用户设备及时获取需要的数据,减少数据访问的时延。
第二方面,在步骤603中,缓存服务器中的数据可以以数组形式存储,每个数组包括两个键,一个键用于存储数据,另一个键用于存储该数据的相关信息,该相关信息可以包括数据锁的状态、数据的过期时刻等等。因此,缓存服务器生成的数据信息可以中包括第一目标数据对应的目标数据锁的状态、第一目标数据的过期时刻等等。缓存服务器中存储的数据锁的状态和锁服务器中存储的数据锁的状态是同步的,每次锁服务器的数据锁的状态改变,会实时通知缓存服务器进行数据锁的状态更新。
如表5所示,表5是第一目标数据对应的数组的例子,该数组的两个键分别为键1和键2,键1存储有第一目标数据,键2存储有相关数据,这些相关数据按照预设顺序存储,示例的,该相关数据包括:过期时刻和目标数据锁的状态,如表5所示,该过期时刻为10:10,目标数据锁的状态为非锁定,实际应用中,该目标数据锁的状态可以由特定标识来指示,如0指示锁定状态,1指示非锁定状态,本公开实施例对此不作限定。
表5
相应的,步骤606中,缓存服务器可以先检测数据锁的状态,然后根据数据锁的状态确定是否进行数据访问,图6-8是根据一示例性实施例示出的另一种根据数据访问请求,在数据库获取第二目标数据的方法的流程图,该方法可以包括如下几个步骤:
在子步骤6068中,网页服务器检测目标数据锁的状态,目标数据锁的状态包括非锁定状态或锁定状态。
网页服务器可以查询数据信息中用于存储相关信息的键,如表5所示,该用于存储相关信息的键为键2,其存储的目标数据锁的状态为非锁定状态。
在子步骤6069中,若目标数据锁的状态为非锁定状态,网页服务器根据数据访问请求,在数据库获取第二目标数据。
若目标数据锁的状态为非锁定状态,说明当前时刻没有线程对该数据锁进行加锁处理,则第一线程是允许对数据库进行访问的,示例的,图6-9是根据一示例性实施例示出的又一种根据数据访问请求,在数据库获取第二目标数据的方法的流程图,该方法可以包括如下几个步骤:
在子步骤6069a中,若目标数据锁的状态为非锁定状态,网页服务器向锁服务器发送加锁请求,该加锁请求包括目标数据锁的标识。
在子步骤6069b中,网页服务器接收锁服务器发送的加锁响应,加锁响应指示允许第一线程对数据库进行访问。
锁服务器可以检测目标数据锁的标识指示的目标数据锁的状态,然后根据目标数据锁的状态回复相应的加锁响应,在本公开实施例中,由步骤6068a可知,目标数据锁的状态为非锁定状态,而缓存服务器中存储的数据锁的状态和锁服务器中存储的数据锁的状态是同步的,因此,锁服务器检测到的目标数据锁的状态也是未锁定状态,锁服务器会根据加锁请求,将目标数据锁的状态设置为锁定状态,向网页服务器发送加锁响应,加锁响应指示允许第一线程对数据库进行访问。详细过程可以参考上述子步骤6062至子步骤6064。
在子步骤6069c中,网页服务器根据数据访问请求,在数据库获取第二目标数据。
若加锁响应指示允许第一线程对数据库进行访问,说明第一线程可以去数据库获取目标数据标识对应的第二目标数据,该第二目标数据可以与第一目标数据相同,也可以与第一目标数据不同。
在子步骤6070中,若目标数据锁的状态为锁定状态,网页服务器向用户设备发送数据访问响应,该数据访问响应包括第一目标数据。
若加锁响应指示禁止第一线程访问数据库,说明第一线程没有权限去数据库获取目标数据标识对应的第二目标数据,第一线程可以直接获取第一目标数据来反馈给用户设备,这样可以保证用户设备及时获取需要的数据,减少数据访问的时延。
第三方面,在步骤603中,缓存服务器中的数据可以以数组形式存储,每个数组包括两个键,一个键用于存储数据,另一个键用于存储该数据的相关信息,该相关信息可以包括数据锁的状态、数据的过期时刻等等。因此,缓存服务器生成的数据信息可以中包括第一目标数据对应的目标数据锁的状态、第一目标数据的过期时刻等等。缓存服务器中存储的数据锁的状态和锁服务器中存储的数据锁的状态是同步的,每次锁服务器的数据锁的状态改变,会实时通知缓存服务器进行数据锁的状态更新。第一目标数据对应的数组可以如表5所示,本公开实施例对此不再赘述。
相应的,步骤605中,网页服务器可以先检测数据锁的状态,然后根据数据锁的状态确定是否进行第一目标数据的存储时长的检测,图6-10是根据一示例性实施例示出的一种检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间的方法的流程图,该方法可以包括如下几个步骤:
在子步骤6054中,网页服务器检测目标数据锁的状态,该目标数据锁的状态包括非锁定状态或锁定状态。
网页服务器可以查询数据信息中用于存储相关信息的键,如表5所示,该用于存储相关信息的键为键2,其存储的目标数据锁的状态为非锁定状态。
在子步骤6055中,若目标数据锁的状态为非锁定状态,网页服务器检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间。
若目标数据锁的状态为非锁定状态,说明当前时刻没有线程对该数据锁进行加锁处理,则第一线程是允许对数据库进行访问的,然后网页服务器再查询检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,详细检测过程可以参考上述步骤605中的解释(如步骤6051至步骤6053的解释),本公开实施例对此不再赘述。
在子步骤6056中,若目标数据锁的状态为锁定状态,网页服务器向用户设备发送数据访问响应,该数据访问响应包括第一目标数据。
若目标数据锁的状态为锁定状态,说明第一线程没有权限去数据库获取目标数据标识对应的第二目标数据,由于缓存服务器返回的数据信息包括第一目标数据,网页服务器可以不进行如步骤6051至步骤6053所示的第一目标数据是否超期的判断,而直接通过第一线程获取第一目标数据来反馈给用户设备,这样可以保证用户设备及时获取需要的数据,减少数据访问的时延。
需要说明的是,若第一线程对目标数据锁进行了加锁处理,则在获取了第二目标数据后,需要对目标数据锁进行解锁处理,例如,在子步骤6061或子步骤6069a中发送的加锁请求中还可以包括:第一线程的标识,则在子步骤6065之后或者子步骤6069之后,还需要解锁处理,如图6-11所示,其示出了本公开根据一示例性实施例示出的一种数据访问方法流程图,该方法包括:
在步骤610中,锁服务器将第一线程的标识记录为对目标数据锁进行加锁的线程的标识。
锁服务器可以在对数据锁加锁时,将发送加锁请求的线程记录为对该数据锁进行加锁的线程,该线程可以记录在数据锁列表中。
表6为一示例的数据锁列表,其中,标识为001的数据锁的状态为非锁定状态,说明当前时刻没有线程对该数据锁进行加锁处理,对该数据锁进行加锁的线程的标识为空,如果锁服务器接收到针对该数据锁的加锁请求,即可对该数据锁加锁,即将该数据锁的状态设置成锁定状态,标识为010的数据锁的状态为锁定状态,说明当前时刻已有线程对该数据锁进行了加锁处理,对该数据锁进行加锁的线程的标识为M,标识为011的数据锁的状态为锁定状态,说明当前时刻已有线程对该数据锁进行了加锁处理,对该数据锁进行加锁的线程的标识为N。实际应用中,数据锁列表中各个数据锁的状态可以由特定标识来指示,如0指示锁定状态,1指示非锁定状态,本公开实施例对此不作限定。
表6
假设锁服务器接收到加锁请求包括第一线程的标识,指示第一线程对目标数据锁进行加锁处理,且目标数据锁的标识为001,第一线程的标识为P,则锁服务器将表6所示的数据锁列表更新得到如表7所示的数据锁列表。其中,标识为001的数据锁的状态为锁定状态,该数据锁的状态设置成锁定状态,对该数据锁进行加锁的线程的标识为P。
表7
在步骤611中,网页服务器向锁服务器发送解锁请求,该解锁请求包括目标数据锁的标识和第一线程的标识。
网页服务器在向缓存服务器发送第二目标数据后,可以向锁服务器发送解锁请求,解锁请求包括目标数据锁的标识和第一线程的标识。
在步骤612中,锁服务器检测目标数据锁的状态。
示例的,锁服务器可以根据目标数据锁的标识001来查询如表7所示的数据锁列表,得到目标数据锁的状态为锁定状态。
在步骤613中,若目标数据锁的状态为锁定状态,锁服务器比较第一线程的标识与对目标数据锁进行加锁的线程的标识是否相同。
锁服务器比较第一线程的标识与对目标数据锁进行加锁的线程的标识是否相同的过程,是对第一线程鉴权的过程,若第一线程的标识与对目标数据锁进行加锁的线程的标识相同,说明是第一线程对目标数据锁进行的加锁,因此,第一线程有权对该目标数据锁进行解锁,若第一线程的标识与对目标数据锁进行加锁的线程的标识不同,说明是其他线程对目标数据锁进行的加锁,因此,第一线程没有权利对该目标数据锁进行解锁。该鉴权过程可以避免没有权限的线程对数据锁的解锁。
在步骤614中,若第一线程的标识与对目标数据锁进行加锁的线程的标识相同,锁服务器将目标数据锁的状态设置为非锁定状态。
可选的,锁服务器可以向网页服务器发送解锁响应指示解锁成功。
在步骤615中,在目标数据锁的状态变化后,锁服务器向缓存服务器发送状态信息,状态信息包括当前时刻目标数据锁的状态。
缓存服务器中可以记录有第一目标数据对应的目标数据锁的状态,因此,缓存服务器发送给数据服务器的数据信息中可以包括第一目标数据对应的目标数据锁的状态,而缓存服务器中存储的数据锁的状态和锁服务器中存储的数据锁的状态是同步的,每次锁服务器的数据锁的状态改变,会实时通知缓存服务器进行数据锁的状态更新,这样可以保证缓存服务器中记录的数据锁的状态的准确性。例如,在步骤614中,锁服务器将目标数据锁的状态设置为非锁定状态,目标锁服务器的状态由锁定状态转变为非锁定状态,其状态产生了变化,因此锁服务器需要向缓存服务器发送状态信息,状态信息包括当前时刻目标数据锁的状态。
在步骤616中,缓存服务器根据状态信息更新缓存服务器中记录的目标数据锁的状态。
实际应用中,由于数据传输路径的堵塞或者其他原因,第一线程对目标数据锁进行了加锁处理后可能无法及时获取第二目标数据,也无法进行解锁处理,这样缓存服务器中存储的第一目标数据在存储时长超过第二时间阈值后就被删除了,变成了无效的数据,而其他线程由于目标数据锁的状态为锁定状态而无法去数据库访问第二目标数据,而缓存数据库也没有存储第一目标数据,用户设备无法获取想要访问的数据。
本公开实施例中,锁服务器可以设置锁定过期时间,在每个数据锁的状态设置为锁定状态时开始计时,在超出该锁定过期时间,仍没有线程发送相应的解锁请求,则自动进行解锁处理,将该数据锁的状态设置为非锁定状态。示例的,假设锁定过期时间为2min,根据第一线程的加锁请求,目标数据锁001的状态在10:20由非锁定状态改变为锁定状态,则在10:22时,若仍然没有接收到第一线程的解锁请求,则锁服务器自动将目标数据锁001的状态由锁定状态改变为非锁定状态,以便于其他线程再进行加锁处理。
实际应用中,缓存服务器中并不是所有缓存的数据都需要应用本公开实施例中提供的数据访问获取方法,如果不是高并发需要的缓存数据即使偶尔过期了重新由网页服务器从数据库获取,数据库的压力也不大,因此可以按照相关技术中的数据访问方法执行,如果是高并发需要的缓存数据可以按照本公开提供实施例提供的数据方法执行。本公开实施例中,高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据,也即访问频率大于预设访问阈值的数据。
需要说明的是,本公开实施例提供的数据访问方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本公开的保护范围之内,因此不再赘述。
综上所述,本公开实施例提供的数据访问方法,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,网页服务器通过在数据库获取的第二目标数据来更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
图7是根据一示例性实施例示出的一种数据访问方法的流程图,本实施例以该数据访问方法应用于图1所示实施环境中的缓存服务器130来举例说明,实际应用中,该数据访问方法也可以应用于其他装置或服务器上,该数据访问方法可以包括如下几个步骤:
在步骤701中,轮询缓存服务器中存储的数据,获取存储时长在第一时间阈值与第二时间阈值之间的数据,得到预选数据集合。
缓存服务器可以对该缓存服务器中存储的数据进行依次检测,检测每个数据的存储时长是否在第一时间阈值与第二时间阈值之间,由于缓存服务器还可以存储数据最近一次更新的时刻或者数据的过期时刻,因此,对每个数据的存储时长的检测过程可以参考步骤605,本公开实施例对此不再赘述。
本公开实施例中,该第一时间阈值小于第二时间阈值。第一时间阈值和第二时间阈值中任一值可以作为数据的有效存储时长。对第一时间阈值和第二时间阈值的详细说明可以参考步骤603以及图6-2,本公开实施例对此不再赘述。
在步骤702中,在预选数据集合中选择访问频率大于预设访问阈值的数据,得到超期数据集合。
访问频率指的是数据被访问的频率,也即预设时间段内,数据访问请求次数较多的数据,通过在预选数据集合中选择访问频率大于预设访问阈值的数据,可以得到一些访问频率较高的数据。预设时间段为10min,假设预选数据集合包括数据1,数据2和数据3,在预设时间段内,数据1的访问频率为10,数据2的访问频率为5,数据3的访问频率为6,而预设访问阈值为7,则确定的超期数据集合中包括数据1,那么数据2和数据3在存储时长大于第二时间阈值后,进行删除,可以释放一些使用频率较低的数据,减少缓存服务器的负荷。
在步骤703中,将超期数据集合中的数据按照超期时长降序排序。
将超期数据集合中的数据按照超期时长降序排序即将超期数据集合中的数据按照超期时由大到小排序,超期时长是指当前时刻与数据的过期时刻的差值,该超期时长小于第二时间阈值与第一时间阈值的差值。其中,第一时间阈值小于第二时间阈值,第一时间阈值可以用于指示第一目标数据的有效存储时长。其中,第二时间阈值用于表示虚拟存储时长,这个虚拟存储时长要比有效存储时长长,例如,第二时间阈值比第一时间阈值大300s(秒),即5min。示例的,假设当前时刻为10:00,而第一目标数据最近一次更新的时刻为9:59,则第一目标数据的存储时长为10:00与9:59的时间差,即1min。
在步骤704中,按照排序的顺序依次在数据库获取每个数据对应的更新数据。
在本公开实施例中,通过将超期数据集合中的数据按照超期时长降序排序可以保证超期时长较长的数据能够优先获取,防止数据因超期被删除,减少缓存过期现象的产生。
在步骤705中,采用每个数据对应的更新数据更新缓存服务器中存储的每个数据。
在本公开实施例中,可以在每次获取更新数据后,就更新相应的数据,也可以在获取了超期数据集合中的数据对应的所有更新数据后,再进行数据的更新,本公开实施例对此不做赘述。
实际应用中,缓存服务器中并不是所有缓存的数据都需要应用本公开实施例中提供的数据访问获取方法,如果不是高并发需要的缓存数据即使偶尔过期了重新由网页服务器从数据库获取,数据库的压力也不大,因此可以按照相关技术中的数据访问方法执行,如果是高并发需要的缓存数据可以按照本公开提供实施例提供的数据方法执行。本公开实施例中,高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据,也即访问频率大于预设访问阈值的数据。
需要说明的是,本发明实施例提供的数据访问方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
综上所述,本公开实施例提供的数据访问方法,通过获取缓存服务器中的存储时长在第一时间阈值与第二时间阈值之间的数据的超期数据集合,在数据库获取超期数据集合中每个数据对应的更新数据,并采用每个数据对应的更新数据更新缓存服务器中存储的每个数据,这样进行数据更新后,缓存服务器中的原来存储的超期数据集合中的数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图8-1是根据一示例性实施例示出的一种数据访问装置80的框图,本实施例以该数据访问装置应用于图1所示实施环境中的网页服务器110来举例说明,该数据访问装置可以包括:
第一接收模块801,被配置为接收用户设备发送的用于请求目标数据的数据访问请求,数据访问请求包括:目标数据标识;
第一发送模块802,被配置为根据第一接收模块801接收的数据访问请求,向缓存服务器发送缓存访问请求,缓存访问请求包括:目标数据标识;
第二接收模块803,被配置为接收缓存服务器发送的数据信息,数据信息包括第一目标数据,第一目标数据为缓存服务器中存储的目标数据标识指示的数据;
检测模块804,被配置为检测第二接收模块803接收的第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,第一目标数据的存储时长为当前时刻与第一目标数据最近一次更新的时刻之差;
获取模块805,被配置为在检测模块804检测到第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据数据访问请求,在数据库获取第二目标数据,第二目标数据为数据库中存储的目标数据标识指示的数据;
第二发送模块806,被配置为向缓存服务器发送获取模块805获取的第二目标数据,缓存服务器用于采用第二目标数据更新缓存服务器中存储的第一目标数据。
综上所述,本公开实施例提供的数据访问方法,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,第二发送模块通过获取模块在数据库获取的第二目标数据来使缓存服务器更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
第一方面,数据信息中包括第一目标数据对应的目标数据锁的标识,图8-2是图8-1示出的数据访问装置中获取模块805的框图。可选的,获取模块805,包括:
第一发送子模块8051,被配置为向锁服务器发送加锁请求,加锁请求包括目标数据锁的标识,锁服务器用于检测目标数据锁的标识指示的目标数据锁的状态,在目标数据锁的状态为非锁定状态时,将目标数据锁的状态设置为锁定状态,目标数据锁包括非锁定状态或锁定状态。
第一接收子模块8052,被配置为接收锁服务器发送的加锁响应。
第一获取子模块8053,被配置为在第一接收子模块8052接收的加锁响应指示允许第一线程对数据库进行访问时,根据数据访问请求,在数据库获取第二目标数据,第一线程为当前时刻执行目标数据的访问过程的线程。
如图8-3所示,其为本公开根据一示意性实施例示出的另一种数据访问装置80的框图。该装置还可以包括:
第三发送模块807,被配置为在加锁响应指示禁止第一线程访问数据库时,向用户设备发送数据访问响应,数据访问响应包括第一目标数据。
第二方面,数据信息中包括第一目标数据对应的目标数据锁的状态,图8-4是图8-1示出的数据访问装置中获取模块805的框图。可选的,该获取模块805,包括:
第一检测子模块8054,被配置为检测目标数据锁的状态,目标数据锁的状态包括非锁定状态或锁定状态;
第二获取子模块8055,被配置为在第一检测子模块8054检测到目标数据锁的状态为非锁定状态时,根据数据访问请求,在数据库获取第二目标数据。
可选的,图8-5是图8-4示出的数据访问装置中第二获取子模块8055的框图。第二获取子模块8055,包括:
第二发送子模块80551,被配置在目标数据锁的状态为非锁定状态时,向锁服务器发送加锁请求,加锁请求包括目标数据锁的标识,锁服务器用于检测目标数据锁的标识指示的目标数据锁的状态,在目标数据锁的状态为非锁定状态时,将目标数据锁的状态设置为锁定状态;
第二接收子模块80552,被配置为接收锁服务器发送的加锁响应,加锁响应指示允许第一线程对数据库进行访问,第一线程为当前时刻执行目标数据的访问过程的线程;
数据获取子模块80553,被配置为根据数据访问请求,在数据库获取第二目标数据。
可选的,图8-6是图8-1示出的数据访问装置中检测模块804的框图。检测模块804,包括:
第二检测子模块8041,被配置为检测目标数据锁的状态,目标数据锁的状态包括非锁定状态或锁定状态;
第三检测子模块8042,被配置为在第二检测子模块8041检测到目标数据锁的状态为非锁定状态时,检测第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间。
如图8-7所示,其为本公开根据一示意性实施例示提供的又一种数据访问装置80的框图。该装置还可以包括:
第四发送模块808,被配置为在目标数据锁的状态为锁定状态时,向用户设备发送数据访问响应,数据访问响应包括第一目标数据。
可选的,数据信息包括一个数组,数组包括两个键,一个键用于存储第一目标数据,另一个键用于存储第一目标数据的过期时刻,图8-8是图8-1示出的数据访问装置中检测模块804的框图。检测模块804,包括:
第三获取子模块8043,被配置为获取当前时刻与过期时刻的差值;
比较子模块8044,被配置为将差值与预设差值比较,预设差值为第二时间阈值与第一时间阈值之差;
确定子模块8045,被配置为在差值大于0且小于预设差值时,确定第一目标数据的存储时长在第一时间阈值与第二时间阈值之间。
可选的,加锁请求还包括:第一线程的标识,如图8-9所示,其为本公开根据一示意性实施例示提供的又一种数据访问装置80的框图。该装置还可以包括:
第五发送模块809,被配置为在向锁服务器发送解锁请求,解锁请求包括目标数据锁的标识和第一线程的标识,锁服务器用于检测目标数据锁的标识指示的目标数据锁的状态,在目标数据锁的状态为锁定状态时,比较第一线程的标识与对目标数据锁进行加锁的线程的标识是否相同,若第一线程的标识与对目标数据锁进行加锁的线程的标识相同,将目标数据锁的状态设置为非锁定状态。
综上所述,本公开实施例提供的数据访问方法,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,第二发送模块通过获取模块在数据库获取的第二目标数据来使缓存服务器更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
图8-1、图8-3和图8-7所示的数据访问装置80,用于执行如图2、图6-1、图6-7和图6-11所示的方法流程。
图9-1是根据一示例性实施例示出的一种数据访问装置90的框图,本实施例以该数据访问装置应用于图1所示实施环境中的缓存服务器130来举例说明,该数据访问装置可以包括:
第一接收模块901,被配置为接收网页服务器发送的缓存访问请求,缓存访问请求包括:目标数据标识,目标数据标识为用户设备向网页服务器发送的用于请求目标数据的数据访问请求中携带的;
生成模块902,被配置为根据第一接收模块901接收的目标数据标识生成数据信息,数据信息包括第一目标数据,第一目标数据为缓存服务器中存储的目标数据标识指示的数据;
发送模块903,被配置为向网页服务器发送生成模块902生成的数据信息;
第二接收模块904,被配置为接收网页服务器发送的第二目标数据,第二目标数据为网页服务器在检测第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据数据访问请求在数据库获取的,第一目标数据的存储时长为当前时刻与第一目标数据最近一次更新的时刻之差,第一时间阈值小于第二时间阈值;
第一更新模块905,被配置为采用第二接收模块904接收的第二目标数据更新缓存服务器中存储的第一目标数据。
综上所述,本公开实施例提供的数据访问装置,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,第二接收模块接收网页服务器在数据库获取的第二目标数据,并由来更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
如图9-2所示,其为本公开根据一示意性实施例示提供的另一种数据访问装置90的框图。该装置还可以包括:
轮询模块906,被配置为轮询缓存服务器中存储的数据,获取超期数据集合,超期数据集合中的数据的存储时长在第一时间阈值与第二时间阈值之间;
获取模块907,被配置为在数据库获取轮询模块906确定的超期数据集合中每个数据对应的更新数据;
第二更新模块908,被配置为采用获取模块907获取的每个数据对应的更新数据更新每个数据。
图9-3是图9-2示出的数据访问装置中获取模块907的框图。获取模块907,包括:
排序子模块9071,被配置为将超期数据集合中的数据按照超期时长降序排序;
获取子模块9072,被配置为按照排序子模块9071确定的排序的顺序依次在数据库获取每个数据对应的更新数据。
图9-4是图9-2示出的数据访问装置中轮询模块906的框图。轮询模块906,包括:
轮询子模块9061,被配置为轮询缓存服务器中存储的数据,获取存储时长在第一时间阈值与第二时间阈值之间的数据,得到预选数据集合。
选择子模块9062,被配置为在轮询子模块9061确定的预选数据集合中选择访问频率大于预设访问阈值的数据,得到超期数据集合。
可选的,缓存服务器中记录有第一目标数据对应的目标数据锁的状态,数据信息中包括第一目标数据对应的目标数据锁的状态,如图9-5所示,其为本公开根据一示意性实施例示提供的又一种数据访问装置90的框图。该装置还可以包括:
第三接收模块909,被配置为接收锁服务器发送的状态信息,状态信息是锁服务器在目标数据锁的状态变化后发送的,状态信息包括当前时刻目标数据锁的状态;
第三更新模块910,被配置为根据第三接收模块909接收的状态信息更新缓存服务器中记录的目标数据锁的状态。
综上所述,本公开实施例提供的数据访问装置,在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,第二接收模块接收网页服务器在数据库获取的第二目标数据,并由来更新缓存服务器中存储的第一目标数据,这样进行数据更新后,缓存服务器中的目标数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
如图9-1、图9-2和图9-5所示的数据访问装置90,用于执行如图3、图6-1和图6-11所示的方法流程。
图10-1是根据一示例性实施例示出的一种数据访问装置00的框图,本实施例以该数据访问装置应用于图1所示实施环境中的锁服务器120来举例说明,该数据访问装置可以包括:
第一接收模块001,被配置为接收网页服务器发送的加锁请求,加锁请求包括第一目标数据对应的目标数据锁的标识,第一目标数据为缓存服务器中存储的目标数据标识指示的数据,目标数据标识为用户设备向网页服务器发送的用于请求目标数据的数据访问请求中携带的,加锁请求是网页服务器在检测第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,第一目标数据的存储时长为当前时刻与第一目标数据最近一次更新的时刻之差,第一时间阈值小于第二时间阈值;
第一检测模块002,被配置为检测第一接收模块001接收的加锁请求中目标数据锁的标识指示的目标数据锁的状态,目标数据锁的状态包括非锁定状态或锁定状态;
第一设置模块003,被配置为在第一检测模块002检测到目标数据锁的状态为非锁定状态时,将目标数据锁的状态设置为锁定状态,向网页服务器发送加锁响应,加锁响应指示允许第一线程对数据库进行访问,第一线程为当前时刻执行目标数据的访问过程的线程。
综上所述,本公开实施例提供的数据访问装置,第一设置模块在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,根据加锁请求,在目标数据锁的状态为非锁定状态,将目标数据锁的状态设置为锁定状态,使除当前时刻执行目标数据的访问过程的线程之外的其它线程无法从数据库获取目标数据锁对应的数据,避免不同线程在数据库中对同一数据的重复获取,相应避免了对缓存数据库中同一数据的重复更新,减少了不必要的操作流程。
如图10-2所示,其为本公开根据一示意性实施例示提供的一种数据访问装置的框图。该装置还可以包括:
第一发送模块004,被配置为在第一检测模块002检测到目标数据锁的状态为锁定状态时,向网页服务器发送加锁响应,加锁响应指示禁止第一线程访问数据库。
可选的,加锁请求还包括:第一线程的标识,如图10-3所示,其为本公开根据一示意性实施例示提供的又一种数据访问装置的框图。该装置还可以包括:
记录模块005,被配置为将第一线程的标识记录为对目标数据锁进行加锁的线程的标识;
第二接收模块006,被配置为接收网页服务器发送的解锁请求,解锁请求包括目标数据锁的标识和第一线程的标识;
第二检测模块007,被配置为检测目标数据锁的状态;
比较模块008,被配置为在第二检测模块007检测到目标数据锁的状态为锁定状态时,比较第一线程的标识与记录模块005记录的对目标数据锁进行加锁的线程的标识是否相同;
第二设置模块009,被配置为在比较模块008比较得到第一线程的标识与对目标数据锁进行加锁的线程的标识相同时,将目标数据锁的状态设置为非锁定状态。
可选的,缓存服务器中记录有第一目标数据对应的目标数据锁的状态,如图10-4所示,其为本公开根据一示意性实施例示提供的再一种数据访问装置的框图。该装置还可以包括:
第二发送模块010,被配置为在目标数据锁的状态变化后,向缓存服务器发送状态信息,状态信息包括当前时刻目标数据锁的状态,缓存服务器用于根据状态信息更新缓存服务器中记录的目标数据锁的状态。
综上所述,本公开实施例提供的数据访问装置,第一设置模块在缓存服务器存储的第一目标数据的存储时长在第一时间阈值与第二时间阈值时,根据加锁请求,在目标数据锁的状态为非锁定状态,将目标数据锁的状态设置为锁定状态,使除当前时刻执行目标数据的访问过程的线程之外的其它线程无法从数据库获取目标数据锁对应的数据,避免不同线程在数据库中对同一数据的重复获取,相应避免了对缓存数据库中同一数据的重复更新,减少了不必要的操作流程。
如图10-1至10-4任一所示的数据访问装置00,用于执行如图4、图6-7和6-11所示的方法流程。
图11-1是根据一示例性实施例示出的一种数据访问装置1的流程图,本实施例以该数据访问装置1应用于图1所示实施环境中的缓存服务器130来举例说明,实际应用中,该数据访问装置也可以应用于其他装置或服务器上,该数据访问装置可以包括:
轮询模块11,被配置为轮询缓存服务器中存储的数据,获取超期数据集合,超期数据集合中的数据的存储时长在第一时间阈值与第二时间阈值之间,第一时间阈值小于第二时间阈值;
获取模块12,被配置为在数据库获取轮询模块11确定的超期数据集合中每个数据对应的更新数据;
更新模块13,被配置为采用获取模块12获取的每个数据对应的更新数据更新缓存服务器中存储的每个数据。
综上所述,本公开实施例提供的数据访问方法,获取模块通过获取缓存服务器中的存储时长在第一时间阈值与第二时间阈值之间的数据的超期数据集合,在数据库获取超期数据集合中每个数据对应的更新数据,并由更新模块采用每个数据对应的更新数据更新缓存服务器中存储的每个数据,这样进行数据更新后,缓存服务器中的原来存储的超期数据集合中的数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
图11-2是图11-1示出的数据访问装置中获取模块12的框图。获取模块12,包括:
排序子模块121,被配置为将超期数据集合中的数据按照超期时长降序排序;
获取子模块122,被配置为按照排序子模块121的排序的顺序依次在数据库获取每个数据对应的更新数据。
图11-3是图11-1示出的数据访问装置中轮询模块11的框图。轮询模块11,包括:
轮询子模块111,被配置为轮询缓存服务器中存储的数据,获取存储时长在第一时间阈值与第二时间阈值之间的数据,得到预选数据集合;
选择子模块112,被配置为在轮询子模块111确定的预选数据集合中选择访问频率大于预设访问阈值的数据,得到超期数据集合。
综上所述,本公开实施例提供的数据访问方法,获取模块通过获取缓存服务器中的存储时长在第一时间阈值与第二时间阈值之间的数据的超期数据集合,在数据库获取超期数据集合中每个数据对应的更新数据,并由更新模块采用每个数据对应的更新数据更新缓存服务器中存储的每个数据,这样进行数据更新后,缓存服务器中的原来存储的超期数据集合中的数据的存储时长重新开始计时,避免了缓存过期现象的产生,相应地避免了缓存过期产生的惊群现象,保证了缓存服务器中数据的有效性,实现了提高数据访问效率,减少访问时延的效果。
如图11-1所示的数据访问装置1,用于执行如图5和图7所示的方法流程。
图12是根据一示例性实施例示出的一种用于数据访问装置1200的框图。例如,装置1200可以被提供为一服务器。参照图12,装置1200包括处理组件1222,其进一步包括一个或多个处理器,以及由存储器1232所代表的存储器资源,用于存储可由处理部件1222执行的指令,例如应用程序。存储器1232中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1222被配置为执行指令,以执行上述数据访问方法。
装置1200还可以包括一个电源组件1226被配置为执行装置1200的电源管理,一个有线或无线网络接口1250被配置为将装置1200连接到网络,和一个输入输出(I/O)接口1258。装置1200可以操作基于存储在存储器1232的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
如图12所示的数据访问装置1200,用于执行如图2、图6-1、图6-7和图6-11所示的方法流程。
图13是根据一示例性实施例示出的一种用于数据访问装置1300的框图。例如,装置1300可以被提供为一服务器。参照图13,装置1300包括处理组件1322,其进一步包括一个或多个处理器,以及由存储器1332所代表的存储器资源,用于存储可由处理部件1322执行的指令,例如应用程序。存储器1332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1322被配置为执行指令,以执行上述数据访问方法。
装置1300还可以包括一个电源组件1326被配置为执行装置1300的电源管理,一个有线或无线网络接口1350被配置为将装置1300连接到网络,和一个输入输出(I/O)接口1358。装置1300可以操作基于存储在存储器1332的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
如图13所示的数据访问装置1300,用于执行如图3、图6-1和图6-11所示的方法流程。
图14是根据一示例性实施例示出的一种用于数据访问装置1400的框图。例如,装置1400可以被提供为一服务器。参照图14,装置1400包括处理组件1422,其进一步包括一个或多个处理器,以及由存储器1432所代表的存储器资源,用于存储可由处理部件1422执行的指令,例如应用程序。存储器1432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1422被配置为执行指令,以执行上述数据访问方法。
装置1400还可以包括一个电源组件1426被配置为执行装置1400的电源管理,一个有线或无线网络接口1450被配置为将装置1400连接到网络,和一个输入输出(I/O)接口1458。装置1400可以操作基于存储在存储器1432的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
如图14所示的数据访问装置1400,用于执行如图4、图6-7和6-11所示的方法流程。
图15是根据一示例性实施例示出的一种用于数据访问装置1500的框图。例如,装置1500可以被提供为一服务器。参照图15,装置1500包括处理组件1522,其进一步包括一个或多个处理器,以及由存储器1532所代表的存储器资源,用于存储可由处理部件1522执行的指令,例如应用程序。存储器1532中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1522被配置为执行指令,以执行上述数据访问方法。
装置1500还可以包括一个电源组件1526被配置为执行装置1500的电源管理,一个有线或无线网络接口1550被配置为将装置1500连接到网络,和一个输入输出(I/O)接口1558。装置1500可以操作基于存储在存储器1532的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
如图15所示的数据访问装置1500,用于执行如图5和图7所示的方法流程。
本公开实施例提供一种数据访问系统,该系统包括:网页服务器、缓存服务器和数据库,
网页服务器包括:图8-1、图8-3和图8-7中任一所示数据访问装置80,缓存服务器包图9-1、图9-2和图9-5中任一所示的数据访问装置90。
进一步的,该系统还包括:锁服务器,锁服务器包括:图10-1至10-4任一所示的数据访问装置00。
本公开实施例提供一种数据访问系统,该系统包括:网页服务器、缓存服务器和数据库,
网页服务器包括:图12提供的数据访问装置1200,缓存服务器包括图13所示的数据访问装置1300。
进一步的,该系统还包括:锁服务器,锁服务器包括:图1所示的数据访问装置1400。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (50)

1.一种数据访问方法,其特征在于,应用于网页服务器,包括:
接收用户设备发送的用于请求目标数据的数据访问请求,所述数据访问请求包括:目标数据标识,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
根据所述数据访问请求,向缓存服务器发送缓存访问请求,所述缓存访问请求包括:所述目标数据标识;
接收所述缓存服务器发送的数据信息,所述数据信息包括第一目标数据和所述第一目标数据对应的目标数据锁的状态,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态,若所述目标数据锁的状态为非锁定状态,检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长;
若所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,根据所述数据访问请求,在数据库获取第二目标数据,所述第二目标数据为所述数据库中存储的所述目标数据标识指示的最新的数据,所述第二目标数据与所述第一目标数据相同或者不同;
向所述缓存服务器发送所述第二目标数据,所述缓存服务器用于采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
2.根据权利要求1所述的方法,其特征在于,所述数据信息中包括所述第一目标数据对应的目标数据锁的标识,
所述根据所述数据访问请求,在数据库获取第二目标数据,包括:
向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态,所述目标数据锁包括非锁定状态或锁定状态;
接收所述锁服务器发送的加锁响应;
若所述加锁响应指示允许第一线程对所述数据库进行访问,根据所述数据访问请求,在数据库获取所述第二目标数据,所述第一线程为当前时刻执行所述目标数据的访问过程的线程。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述加锁响应指示禁止所述第一线程访问所述数据库,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
4.根据权利要求1所述的方法,其特征在于,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,
所述根据所述数据访问请求,在数据库获取第二目标数据,包括:
检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
若所述目标数据锁的状态为非锁定状态,根据所述数据访问请求,在数据库获取所述第二目标数据。
5.根据权利要求1或4所述的方法,其特征在于,所述方法还包括:
若所述目标数据锁的状态为锁定状态,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
6.根据权利要求4所述的方法,其特征在于,所述若所述目标数据锁的状态为非锁定状态,根据所述数据访问请求,在数据库获取所述第二目标数据,包括:
若所述目标数据锁的状态为非锁定状态,向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态;
接收所述锁服务器发送的加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程;
根据所述数据访问请求,在数据库获取所述第二目标数据。
7.根据权利要求1所述的方法,其特征在于,所述数据信息包括一个数组,所述数组包括两个键,一个键用于存储所述第一目标数据,另一个键用于存储所述第一目标数据的过期时刻,
所述检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,包括:
获取当前时刻与所述过期时刻的差值;
将所述差值与预设差值比较,所述预设差值为所述第二时间阈值与所述第一时间阈值之差;
若所述差值大于0且小于所述预设差值,确定所述第一目标数据的存储时长在所述第一时间阈值与所述第二时间阈值之间。
8.根据权利要求2或6所述的方法,其特征在于,所述加锁请求还包括:所述第一线程的标识,所述方法还包括:
向所述锁服务器发送解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为锁定状态时,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同,若所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同,将所述目标数据锁的状态设置为非锁定状态。
9.一种数据访问方法,其特征在于,应用于缓存服务器,包括:
接收网页服务器发送的缓存访问请求,所述缓存访问请求包括:目标数据标识,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
根据所述目标数据标识生成数据信息,所述数据信息包括第一目标数据和所述第一目标数据对应的目标数据锁的状态,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
向所述网页服务器发送所述数据信息;
接收所述网页服务器发送的第二目标数据,所述第二目标数据为所述网页服务器在检测到所述目标数据锁的状态为非锁定状态下,检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求在数据库获取的所述目标数据标识指示的最新的数据,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长,所述第二目标数据与所述第一目标数据相同或者不同;
采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
轮询所述缓存服务器中存储的数据,获取超期数据集合,所述超期数据集合中的数据的存储时长在所述第一时间阈值与所述第二时间阈值之间;
在所述数据库获取所述超期数据集合中每个数据对应的更新数据;
采用所述每个数据对应的更新数据更新所述每个数据。
11.根据权利要求10所述的方法,其特征在于,所述在所述数据库获取所述超期数据集合中每个数据对应的更新数据,包括:
将所述超期数据集合中的数据按照超期时长降序排序;
按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
12.根据权利要求10或11所述的方法,其特征在于,所述轮询所述缓存服务器中存储的数据,获取超期数据集合,包括:
轮询所述缓存服务器中存储的数据,获取存储时长在所述第一时间阈值与所述第二时间阈值之间的数据,得到预选数据集合;
在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到所述超期数据集合。
13.根据权利要求9所述的方法,其特征在于,所述方法还包括:
接收锁服务器发送的状态信息,所述状态信息是所述锁服务器在所述目标数据锁的状态变化后发送的,所述状态信息包括当前时刻所述目标数据锁的状态;
根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
14.一种数据访问方法,其特征在于,应用于锁服务器,包括:
接收网页服务器发送的加锁请求,所述加锁请求包括第一目标数据对应的目标数据锁的标识,所述第一目标数据为缓存服务器中存储的目标数据标识指示的数据,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述加锁请求是所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
检测所述目标数据锁的标识指示的目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
若所述目标数据锁的状态为非锁定状态,将所述目标数据锁的状态设置为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程,所述允许第一线程对所述数据库进行访问用于指示所述网页服务器在所述数据库获取所述目标数据标识指示的最新的第二目标数据,所述第二目标数据与所述第一目标数据相同或者不同。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
若所述目标数据锁的状态为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示禁止所述第一线程访问所述数据库。
16.根据权利要求14所述的方法,其特征在于,所述加锁请求还包括:所述第一线程的标识,所述方法还包括:
将所述第一线程的标识记录为对所述目标数据锁进行加锁的线程的标识;
接收所述网页服务器发送的解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识;
检测所述目标数据锁的状态;
若所述目标数据锁的状态为锁定状态,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同;
若所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同,将所述目标数据锁的状态设置为非锁定状态。
17.根据权利要求14至16任一所述的方法,其特征在于,所述缓存服务器中记录有所述第一目标数据对应的目标数据锁的状态,
所述方法还包括:
在所述目标数据锁的状态变化后,向所述缓存服务器发送状态信息,所述状态信息包括当前时刻所述目标数据锁的状态,所述缓存服务器用于根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
18.一种数据访问方法,其特征在于,应用于缓存服务器,包括:
轮询缓存服务器中存储的数据,获取存储时长在第一时间阈值与第二时间阈值之间的数据,得到预选数据集合,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长;
在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到超期数据集合;
在数据库获取所述超期数据集合中每个数据对应的最新的更新数据,所述超期数据集合中每个数据与对应的更新数据相同或不同;
采用所述每个数据对应的更新数据更新所述缓存服务器中存储的所述每个数据。
19.根据权利要求18所述的方法,其特征在于,所述在数据库获取所述超期数据集合中每个数据对应的更新数据,包括:
将所述超期数据集合中的数据按照超期时长降序排序;
按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
20.一种数据访问装置,其特征在于,应用于网页服务器,包括:
第一接收模块,被配置为接收用户设备发送的用于请求目标数据的数据访问请求,所述数据访问请求包括:目标数据标识,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
第一发送模块,被配置为根据所述数据访问请求,向缓存服务器发送缓存访问请求,所述缓存访问请求包括:所述目标数据标识;
第二接收模块,被配置为接收所述缓存服务器发送的数据信息,所述数据信息包括第一目标数据和所述第一目标数据对应的目标数据锁的状态,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
检测模块,被配置为检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态,若所述目标数据锁的状态为非锁定状态,检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长;
获取模块,被配置为在所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求,在数据库获取第二目标数据,所述第二目标数据为所述数据库中存储的所述目标数据标识指示的最新的数据,所述第二目标数据与所述第一目标数据相同或者不同;
第二发送模块,被配置为向所述缓存服务器发送所述第二目标数据,所述缓存服务器用于采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
21.根据权利要求20所述的装置,其特征在于,所述数据信息中包括所述第一目标数据对应的目标数据锁的标识,所述获取模块,包括:
第一发送子模块,被配置为向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态,所述目标数据锁包括非锁定状态或锁定状态;
第一接收子模块,被配置为接收所述锁服务器发送的加锁响应;
第一获取子模块,被配置为在所述加锁响应指示允许第一线程对所述数据库进行访问时,根据所述数据访问请求,在数据库获取所述第二目标数据,所述第一线程为当前时刻执行所述目标数据的访问过程的线程。
22.根据权利要求21所述的装置,其特征在于,所述装置还包括:
第三发送模块,被配置为在所述加锁响应指示禁止所述第一线程访问所述数据库时,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
23.根据权利要求20所述的装置,其特征在于,所述数据信息中包括所述第一目标数据对应的目标数据锁的状态,所述获取模块,包括:
第一检测子模块,被配置为检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
第二获取子模块,被配置为在所述目标数据锁的状态为非锁定状态时,根据所述数据访问请求,在数据库获取所述第二目标数据。
24.根据权利要求20或23所述的装置,其特征在于,所述装置还包括:
第四发送模块,被配置为在所述目标数据锁的状态为锁定状态时,向所述用户设备发送数据访问响应,所述数据访问响应包括所述第一目标数据。
25.根据权利要求23所述的装置,其特征在于,所述第二获取子模块,包括:
第二发送子模块,被配置在所述目标数据锁的状态为非锁定状态时,向锁服务器发送加锁请求,所述加锁请求包括所述目标数据锁的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态;
第二接收子模块,被配置为接收所述锁服务器发送的加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程;
数据获取子模块,被配置为根据所述数据访问请求,在数据库获取所述第二目标数据。
26.根据权利要求20所述的装置,其特征在于,所述数据信息包括一个数组,所述数组包括两个键,一个键用于存储所述第一目标数据,另一个键用于存储所述第一目标数据的过期时刻,
所述检测模块,包括:
第三获取子模块,被配置为获取当前时刻与所述过期时刻的差值;
比较子模块,被配置为将所述差值与预设差值比较,所述预设差值为所述第二时间阈值与所述第一时间阈值之差;
确定子模块,被配置为在所述差值大于0且小于所述预设差值时,确定所述第一目标数据的存储时长在所述第一时间阈值与所述第二时间阈值之间。
27.根据权利要求21或25所述的装置,其特征在于,所述加锁请求还包括:所述第一线程的标识,所述装置还包括:
第五发送模块,被配置为在向所述锁服务器发送解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识,所述锁服务器用于检测所述目标数据锁的标识指示的目标数据锁的状态,在所述目标数据锁的状态为锁定状态时,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同,若所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同,将所述目标数据锁的状态设置为非锁定状态。
28.一种数据访问装置,其特征在于,应用于缓存服务器,包括:
第一接收模块,被配置为接收网页服务器发送的缓存访问请求,所述缓存访问请求包括:目标数据标识,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
生成模块,被配置为根据所述目标数据标识生成数据信息,所述数据信息包括第一目标数据和所述第一目标数据对应的目标数据锁的状态,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
发送模块,被配置为向所述网页服务器发送所述数据信息;
第二接收模块,被配置为接收所述网页服务器发送的第二目标数据,所述第二目标数据为所述网页服务器在检测到所述目标数据锁的状态为非锁定状态下,检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求在数据库获取的所述目标数据标识指示的最新的数据,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长,所述第二目标数据与所述第一目标数据相同或者不同;
第一更新模块,被配置为采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
29.根据权利要求28所述的装置,其特征在于,所述装置还包括:
轮询模块,被配置为轮询所述缓存服务器中存储的数据,获取超期数据集合,所述超期数据集合中的数据的存储时长在所述第一时间阈值与所述第二时间阈值之间;
获取模块,被配置为在所述数据库获取所述超期数据集合中每个数据对应的更新数据;
第二更新模块,被配置为采用所述每个数据对应的更新数据更新所述每个数据。
30.根据权利要求29所述的装置,其特征在于,所述获取模块,包括:
排序子模块,被配置为将所述超期数据集合中的数据按照超期时长降序排序;
获取子模块,被配置为按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
31.根据权利要求29或30所述的装置,其特征在于,所述轮询模块,包括:
轮询子模块,被配置为轮询所述缓存服务器中存储的数据,获取存储时长在所述第一时间阈值与所述第二时间阈值之间的数据,得到预选数据集合;
选择子模块,被配置为在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到所述超期数据集合。
32.根据权利要求28所述的装置,其特征在于,所述装置还包括:
第三接收模块,被配置为接收锁服务器发送的状态信息,所述状态信息是所述锁服务器在所述目标数据锁的状态变化后发送的,所述状态信息包括当前时刻所述目标数据锁的状态;
第三更新模块,被配置为根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
33.一种数据访问装置,其特征在于,应用于锁服务器,包括:
第一接收模块,被配置为接收网页服务器发送的加锁请求,所述加锁请求包括第一目标数据对应的目标数据锁的标识,所述第一目标数据为缓存服务器中存储的目标数据标识指示的数据,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述加锁请求是所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
第一检测模块,被配置为检测所述目标数据锁的标识指示的目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
第一设置模块,被配置为在所述目标数据锁的状态为非锁定状态时,将所述目标数据锁的状态设置为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程,所述允许第一线程对所述数据库进行访问用于指示所述网页服务器在所述数据库获取所述目标数据标识指示的最新的第二目标数据,所述第二目标数据与所述第一目标数据相同或者不同。
34.根据权利要求33所述的装置,其特征在于,所述装置还包括:
第一发送模块,被配置为在所述目标数据锁的状态为锁定状态时,向所述网页服务器发送加锁响应,所述加锁响应指示禁止所述第一线程访问所述数据库。
35.根据权利要求33所述的装置,其特征在于,所述加锁请求还包括:所述第一线程的标识,所述装置还包括:
记录模块,被配置为将所述第一线程的标识记录为对所述目标数据锁进行加锁的线程的标识;
第二接收模块,被配置为接收所述网页服务器发送的解锁请求,所述解锁请求包括所述目标数据锁的标识和所述第一线程的标识;
第二检测模块,被配置为检测所述目标数据锁的状态;
比较模块,被配置为在所述目标数据锁的状态为锁定状态时,比较所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识是否相同;
第二设置模块,被配置为在所述第一线程的标识与对所述目标数据锁进行加锁的线程的标识相同时,将所述目标数据锁的状态设置为非锁定状态。
36.根据权利要求33至35任一所述的装置,其特征在于,所述缓存服务器中记录有所述第一目标数据对应的目标数据锁的状态,所述装置还包括:
第二发送模块,被配置为在所述目标数据锁的状态变化后,向所述缓存服务器发送状态信息,所述状态信息包括当前时刻所述目标数据锁的状态,所述缓存服务器用于根据所述状态信息更新所述缓存服务器中记录的所述目标数据锁的状态。
37.一种数据访问装置,其特征在于,应用于缓存服务器,包括:
轮询模块,被配置为轮询缓存服务器中存储的数据,获取存储时长在第一时间阈值与第二时间阈值之间的数据,得到预选数据集合,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长;在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到超期数据集合;
获取模块,被配置为在数据库获取所述超期数据集合中每个数据对应的最新的更新数据,所述超期数据集合中每个数据与对应的更新数据相同或不同;
更新模块,被配置为采用所述每个数据对应的更新数据更新所述缓存服务器中存储的所述每个数据。
38.根据权利要求37所述的装置,其特征在于,所述获取模块,包括:
排序子模块,被配置为将所述超期数据集合中的数据按照超期时长降序排序;
获取子模块,被配置为按照所述排序的顺序依次在数据库获取所述每个数据对应的更新数据。
39.一种数据访问系统,其特征在于,所述系统包括:网页服务器、缓存服务器和数据库,
所述网页服务器包括:权利要求20至27任一所述的数据访问装置;
所述缓存服务器包括:权利要求28至32任一所述的数据访问装置。
40.根据权利要求39所述的系统,其特征在于,所述系统还包括:锁服务器,所述锁服务器包括:权利要求33至36任一所述的数据访问装置。
41.一种数据访问装置,其特征在于,应用于网页服务器,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
接收用户设备发送的用于请求目标数据的数据访问请求,所述数据访问请求包括:目标数据标识,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
根据所述数据访问请求,向缓存服务器发送缓存访问请求,所述缓存访问请求包括:所述目标数据标识;
接收所述缓存服务器发送的数据信息,所述数据信息包括第一目标数据和所述第一目标数据对应的目标数据锁的状态,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
检测所述目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态,若所述目标数据锁的状态为非锁定状态,检测所述第一目标数据的存储时长是否在第一时间阈值与第二时间阈值之间,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长;
若所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间,根据所述数据访问请求,在数据库获取第二目标数据,所述第二目标数据为所述数据库中存储的所述目标数据标识指示的最新的数据,所述第二目标数据与所述第一目标数据相同或者不同;
向所述缓存服务器发送所述第二目标数据,所述缓存服务器用于采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
42.一种数据访问装置,其特征在于,应用于缓存服务器,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
接收网页服务器发送的缓存访问请求,所述缓存访问请求包括:目标数据标识,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
根据所述目标数据标识生成数据信息,所述数据信息包括第一目标数据和所述第一目标数据对应的目标数据锁的状态,所述第一目标数据为所述缓存服务器中存储的所述目标数据标识指示的数据;
向所述网页服务器发送所述数据信息;
接收所述网页服务器发送的第二目标数据,所述第二目标数据为所述网页服务器在检测到所述目标数据锁的状态为非锁定状态下,检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时,根据所述数据访问请求在数据库获取的所述目标数据标识指示的最新的数据,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长,所述第二目标数据与所述第一目标数据相同或者不同;
采用所述第二目标数据更新所述缓存服务器中存储的第一目标数据。
43.一种数据访问装置,其特征在于,应用于锁服务器,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
接收网页服务器发送的加锁请求,所述加锁请求包括第一目标数据对应的目标数据锁的标识,所述第一目标数据为缓存服务器中存储的目标数据标识指示的数据,所述目标数据标识为用户设备向所述网页服务器发送的用于请求目标数据的数据访问请求中携带的,所述加锁请求是所述网页服务器在检测所述第一目标数据的存储时长在第一时间阈值与第二时间阈值之间时发送的,所述第一目标数据的存储时长为当前时刻与所述第一目标数据最近一次更新的时刻之差,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长,所述目标数据为高并发需要的缓存数据,所述高并发需要的缓存数据指的是同一时间段被大于预设阈值的线程访问的数据;
检测所述目标数据锁的标识指示的目标数据锁的状态,所述目标数据锁的状态包括非锁定状态或锁定状态;
若所述目标数据锁的状态为非锁定状态,将所述目标数据锁的状态设置为锁定状态,向所述网页服务器发送加锁响应,所述加锁响应指示允许第一线程对所述数据库进行访问,所述第一线程为当前时刻执行所述目标数据的访问过程的线程,所述允许第一线程对所述数据库进行访问用于指示所述网页服务器在所述数据库获取所述目标数据标识指示的最新的第二目标数据,所述第二目标数据与所述第一目标数据相同或者不同。
44.一种数据访问装置,其特征在于,应用于缓存服务器,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
轮询缓存服务器中存储的数据,获取存储时长在第一时间阈值与第二时间阈值之间的数据,得到预选数据集合,所述第一时间阈值小于所述第二时间阈值,所述第一时间阈值用于指示缓存更新触发时刻,且所述第二时间阈值用于指示数据的有效存储时长;
在所述预选数据集合中选择访问频率大于预设访问阈值的数据,得到超期数据集合;
在数据库获取所述超期数据集合中每个数据对应的最新的更新数据,所述超期数据集合中每个数据与对应的更新数据相同或不同;
采用所述每个数据对应的更新数据更新所述缓存服务器中存储的所述每个数据。
45.一种数据访问系统,其特征在于,所述系统包括:网页服务器、缓存服务器和数据库,
所述网页服务器包括:权利要求41所述的数据访问装置;
所述缓存服务器包括:权利要求42所述的数据访问装置。
46.根据权利要求45所述的系统,其特征在于,所述系统还包括:锁服务器,所述锁服务器包括:权利要求43所述的数据访问装置。
47.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求1-8任一项所述的方法的步骤。
48.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求9-13任一项所述的方法的步骤。
49.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求14-17任一项所述的方法的步骤。
50.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求18-19任一项所述的方法的步骤。
CN201510464268.5A 2015-07-31 2015-07-31 数据访问方法、装置和系统 Active CN105138587B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510464268.5A CN105138587B (zh) 2015-07-31 2015-07-31 数据访问方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510464268.5A CN105138587B (zh) 2015-07-31 2015-07-31 数据访问方法、装置和系统

Publications (2)

Publication Number Publication Date
CN105138587A CN105138587A (zh) 2015-12-09
CN105138587B true CN105138587B (zh) 2019-09-10

Family

ID=54723936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510464268.5A Active CN105138587B (zh) 2015-07-31 2015-07-31 数据访问方法、装置和系统

Country Status (1)

Country Link
CN (1) CN105138587B (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608115A (zh) * 2015-12-11 2016-05-25 北京奇虎科技有限公司 数据获取方法与装置
CN105511813A (zh) * 2015-12-11 2016-04-20 北京奇虎科技有限公司 访问服务器磁盘的方法、装置及系统
CN107291756A (zh) 2016-04-01 2017-10-24 阿里巴巴集团控股有限公司 数据缓存的方法及装置
CN106066816B (zh) * 2016-05-26 2019-11-15 北京小米移动软件有限公司 用于数据缓存的方法和装置
CN107451144B (zh) * 2016-05-31 2019-12-31 北京京东尚科信息技术有限公司 缓存读取方法和装置
CN106201922A (zh) * 2016-06-29 2016-12-07 乐视控股(北京)有限公司 一种数据访问的方法和装置
CN106202462B (zh) * 2016-07-15 2020-05-01 北京奇虎科技有限公司 为数据配置数据锁的方法及装置
CN107943594B (zh) * 2016-10-13 2021-11-12 北京京东尚科信息技术有限公司 数据获取方法和装置
CN107992489B (zh) * 2016-10-26 2021-07-09 腾讯科技(北京)有限公司 一种数据处理方法及服务器
CN109952565B (zh) * 2016-11-16 2021-10-22 华为技术有限公司 内存访问技术
CN106599721A (zh) * 2016-12-13 2017-04-26 微梦创科网络科技(中国)有限公司 一种基于缓存的数据访问方法及装置
CN108429777B (zh) * 2017-02-15 2022-05-13 腾讯科技(北京)有限公司 一种基于缓存的数据更新方法及服务器
CN106897433A (zh) * 2017-02-27 2017-06-27 福建中金在线信息科技有限公司 一种数据获取方法及装置
CN108989373B (zh) * 2017-06-02 2020-12-04 华为技术有限公司 访问数据的方法和装置
CN107357857A (zh) * 2017-06-29 2017-11-17 深圳市金立通信设备有限公司 一种更新缓存信息的方法及服务节点设备
CN107665235B (zh) * 2017-07-27 2020-06-30 深圳壹账通智能科技有限公司 缓存处理方法、装置、计算机设备和存储介质
CN110019408B (zh) * 2017-12-29 2024-03-29 北京奇虎科技有限公司 一种用于追溯数据状态的方法、装置及计算机设备
CN108363796A (zh) * 2018-02-23 2018-08-03 北京网信云服信息科技有限公司 一种数据的迁移方法及装置
CN110289977B (zh) * 2018-03-19 2022-11-08 北京京东尚科信息技术有限公司 物流仓库系统的故障检测方法及系统、设备和存储介质
CN109120691B (zh) * 2018-08-15 2021-05-14 恒生电子股份有限公司 业务系统的状态检测方法、系统、装置及计算机可读介质
CN109491928B (zh) * 2018-11-05 2021-08-10 深圳乐信软件技术有限公司 缓存控制方法、装置、终端及存储介质
CN109815227B (zh) * 2018-12-13 2024-04-16 平安科技(深圳)有限公司 数据锁管理方法、装置、计算机设备及存储介质
CN109828749A (zh) * 2018-12-29 2019-05-31 北京航天云路有限公司 兼顾快速响应和数据更新的数据缓存方法及系统
CN110022296B (zh) * 2019-03-01 2021-05-18 口口相传(北京)网络技术有限公司 实时数据处理方法、装置、存储介质及计算机设备
CN109933544B (zh) * 2019-03-13 2023-07-04 广州华多网络科技有限公司 数据预热方法、装置、服务器及存储介质
CN109918575A (zh) * 2019-03-29 2019-06-21 阿里巴巴集团控股有限公司 一种应用于搜索系统的数据淘汰方法和装置
CN110147379B (zh) * 2019-04-02 2023-06-30 平安科技(深圳)有限公司 基于数据锁的信息采集方法、装置、计算机设备
CN110515959B (zh) * 2019-07-25 2022-09-20 北京奇艺世纪科技有限公司 数据一致性实现方法、装置及可读存储介质
CN110399383A (zh) * 2019-07-29 2019-11-01 中国工商银行股份有限公司 应用于服务器的数据处理方法、装置、计算设备、介质
CN110489696B (zh) * 2019-07-31 2023-07-04 上海艾融软件股份有限公司 缓存更新方法、装置及电子设备、存储介质
CN110866053A (zh) * 2019-10-16 2020-03-06 平安普惠企业管理有限公司 动态配置缓存期限的方法、装置、计算机设备及存储介质
CN110837513B (zh) * 2019-11-07 2023-05-12 腾讯科技(深圳)有限公司 一种缓存更新方法、装置、服务器及存储介质
CN110941449A (zh) * 2019-11-15 2020-03-31 新华三半导体技术有限公司 Cache块处理方法、装置及处理器芯片
CN112839008B (zh) * 2019-11-22 2024-02-06 北京沃东天骏信息技术有限公司 一种访问监控方法、装置和系统
CN111209388B (zh) * 2019-12-25 2021-02-23 江苏艾佳家居用品有限公司 用于关键词推广页面的数据处理方法、装置、计算机设备
CN111241134B (zh) * 2019-12-31 2023-08-08 五八有限公司 一种数据处理方法及装置
CN112052264B (zh) * 2020-08-05 2021-08-10 北京五八信息技术有限公司 业务数据查询方法、装置、电子设备及可读存储介质
CN113674821B (zh) * 2021-10-21 2022-03-22 浙江太美医疗科技股份有限公司 网络交互方法、装置、设备和存储介质
CN114490752A (zh) * 2021-12-31 2022-05-13 北京声智科技有限公司 一种数据获取方法、装置、电子设备和存储介质
CN114866571A (zh) * 2022-05-31 2022-08-05 广东三维睿新科技有限公司 一种企业资源库系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779132A (zh) * 2011-05-12 2012-11-14 阿里巴巴集团控股有限公司 数据更新方法、系统及数据库服务器
CN104133783A (zh) * 2014-07-11 2014-11-05 北京京东尚科信息技术有限公司 处理分散式缓存数据的方法和装置
US8978159B1 (en) * 2012-12-31 2015-03-10 Emc Corporation Methods and apparatus for mediating access to derivatives of sensitive data
CN104598547A (zh) * 2014-12-30 2015-05-06 深圳市兰丁科技有限公司 基于大数据的数据访问处理方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729247B (zh) * 2012-10-12 2017-04-12 阿里巴巴集团控股有限公司 数据获取请求的处理方法、系统及服务器
CN103617131B (zh) * 2013-11-26 2017-02-22 曙光信息产业股份有限公司 一种实现数据缓存的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779132A (zh) * 2011-05-12 2012-11-14 阿里巴巴集团控股有限公司 数据更新方法、系统及数据库服务器
US8978159B1 (en) * 2012-12-31 2015-03-10 Emc Corporation Methods and apparatus for mediating access to derivatives of sensitive data
CN104133783A (zh) * 2014-07-11 2014-11-05 北京京东尚科信息技术有限公司 处理分散式缓存数据的方法和装置
CN104598547A (zh) * 2014-12-30 2015-05-06 深圳市兰丁科技有限公司 基于大数据的数据访问处理方法和装置

Also Published As

Publication number Publication date
CN105138587A (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
CN105138587B (zh) 数据访问方法、装置和系统
CN105247529B (zh) 在目录服务之间同步凭证散列
CN105700939B (zh) 一种分布式系统中多线程同步的方法和系统
JP6210987B2 (ja) クラスタ化クライアントのフェイルオーバ
CN108132830A (zh) 一种任务调度方法、装置及系统
US10999279B1 (en) Credential-less database system integrations
US20110225373A1 (en) Computer system and method of data cache management
US7209990B2 (en) Maintain fairness of resource allocation in a multi-node environment
US11514022B2 (en) Streams on shared database objects
CN109804354A (zh) 用于消息队列的消息高速缓存管理
JP2023512247A (ja) 複数のチェーンを使用した共有キャッシュ内のオブジェクトの管理
CN104731722B (zh) 一种针对缓存页面的页面管理方法及装置
US20070208946A1 (en) High performance secure caching in the mid-tier
US8341368B2 (en) Automatic reallocation of structured external storage structures
CN109844723B (zh) 使用基于服务的统计信息进行主控建立的方法和系统
CN110457307A (zh) 元数据管理系统、用户集群创建方法、装置、设备和介质
US11176013B2 (en) Method to efficiently and reliably process ordered user account events in a cluster
US11003770B2 (en) Predictive real-time anti-virus scanning
US11057381B1 (en) Using remotely stored credentials to access external resources
JP6607044B2 (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム
Kobyliński et al. Helenos: A realistic benchmark for distributed transactional memory
US10938701B2 (en) Efficient heartbeat with remote servers by NAS cluster nodes
Bakshi et al. A Novel Approach for Maintaining Consistency in Distributed File System
Xia et al. The research and implementation of a highly concurrent and highly available system for acquiring personal virtual assets
Dynda et al. Large-scale File System Design and Architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant