CN103853504B - 一种缓存系统数据存取方法 - Google Patents

一种缓存系统数据存取方法 Download PDF

Info

Publication number
CN103853504B
CN103853504B CN201410049160.5A CN201410049160A CN103853504B CN 103853504 B CN103853504 B CN 103853504B CN 201410049160 A CN201410049160 A CN 201410049160A CN 103853504 B CN103853504 B CN 103853504B
Authority
CN
China
Prior art keywords
thread
handle
memcache
data
key
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
CN201410049160.5A
Other languages
English (en)
Other versions
CN103853504A (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.)
Hunan aisuizhizhen Information Technology Co.,Ltd.
Original Assignee
Shanghai Eisoo Information Technology Co Ltd
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 Shanghai Eisoo Information Technology Co Ltd filed Critical Shanghai Eisoo Information Technology Co Ltd
Priority to CN201410049160.5A priority Critical patent/CN103853504B/zh
Publication of CN103853504A publication Critical patent/CN103853504A/zh
Application granted granted Critical
Publication of CN103853504B publication Critical patent/CN103853504B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种缓存系统数据存取方法,数据存储系统通过该存取方法并发访问Memcache缓存系统的数据时,每个线程均拥有一个独立的、属于自己的Memcache操作句柄和一个唯一标识符,线程使用自己的Memcache操作句柄进行数据存取,每个所述线程的唯一标识符和Memcache操作句柄以Key‑Value键值对的形成存储在句柄管理器中。与现有技术相比,本发明将多连接方式和多线程技术结合应用,加快Memcache缓存系统的访问速度,提高它的操作频率,以扩大其在分布式文件系统中作为缓存提高数据访问速度的效果。

Description

一种缓存系统数据存取方法
技术领域
本发明涉及一种数据存取方法,尤其是涉及一种缓存系统数据存取方法。
背景技术
信息技术的发展便利了人民的生活,改变了人们的生活方式,人们产生的数据量正在日益膨胀。对于传统的数据存储系统来说,快速处理这些庞大的数据正在变得越来越困难,大量的数据会导致处理能力有限的存储系统无法应付,产生的结果便是耗时巨大,难以满足人们对快速处理数据的要求,因此需要寻找新的技术改进,以提高存储系统处理大量数据的能力。
如今越来越多的数据存储系统开始使用缓存技术。缓存能够快速响应用户写入、读取数据的操作,是数据存储系统与用户交换数据的中间介质,它可分为写缓存和读缓存。写缓存用于接收用户发来的数据,用户将数据发送给写缓存后,数据存储系统便将写缓存中的数据逐步接收并写入到磁盘中。读缓存用于让用户能快速访问存储系统中的数据,存储系统把用户经常需要获取的数据写入读缓存中,用户便可直接读取读缓存中的数据,而无需直接和底层存储系统打交道。但当多个用户同时发送大量数据给数据存储系统时,存储系统如何快速从写缓存上接收数据并写入读缓存,又成为一个问题。
一个有效且通用的方法便是使用多线程并发访问的方式,提高数据的访问速度。但当多个线程具有共用的独占式资源时,各个线程往往会由于需要访问这些共用的资源而进行加锁、解锁操作,以保证对这些资源的独占。而加锁、解锁、使用独占式资源又会带来新的问题,一个线程在使用独占式资源时,其它线程必须等待其使用结束、释放相关的锁之后才能占用该资源,这就造成了线程为获得独占式资源而等待的现象,而且,当一个线程使用完独占式资源并释放锁时,其它线程为了获得该资源而发生的“锁竞争”现象也会导致一定的性能开销。这样,带有锁的多线程并发访问方式未必能显著提高数据的存取速度,这对于具有高实时性的数据存取系统来说,无疑是致命的缺陷。
Memcache是一个高性能、分布式的内存对象缓存系统,采用的是Key-Value存储结构。通过在内存中维护一个巨大的哈希链表,Memcache可以存储各种格式的数据,并且可通过目前已经趋于成熟的API接口对这些数据进行增、删、改、查等操作。它可通过客户端实现分布式结构组织,从而扩大数据容量、提高数据的稳定性。Memcache的访问性能极高,单条连接对Memcache服务器的每秒访问次数可达到30000以上。目前很多大型的数据存储系统已经使用了Memcache作为缓存工具,以提高整个系统的数据访问速度。大型的数据存储系统一般会建立一条对Memcache服务器的连接,然后利用该连接,使用多线程并发的方式访问数据,以提高数据的存取速度。但由于这条连接中有不少独占式资源是各个访问线程共有的,因此每个线程在获取这些独占式资源前必须对这些资源进行加锁并在使用完之后进行解锁,以保证它对这些资源的充分独占。这就会使其它线程为等待资源被释放而被挂起,从而降低存取操作的速度。所以,即使使用了多线程并发访问的方式,对提高Memcache的访问性能效果也不会很显著。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种缓存系统数据存取方法,将多连接方式和多线程技术结合应用,加快Memcache缓存系统的访问速度,提高它的操作频率,以扩大其在分布式文件系统中作为缓存提高数据访问速度的效果。
本发明的目的可以通过以下技术方案来实现:
一种缓存系统数据存取方法,数据存储系统通过该存取方法并发访问Memcache缓存系统的数据时,每个线程均拥有一个独立的、属于自己的Memcache操作句柄和一个唯一标识符,线程使用自己的Memcache操作句柄进行数据存取,每个所述线程的唯一标识符和Memcache操作句柄以Key-Value键值对的形成存储在句柄管理器中,每个线程访问Memcache缓存系统的具体步骤包括:
1)获取线程本身的唯一标识符;
2)查找句柄管理器中是否存在键为当前唯一标识符的元素,若是,则将该键对应的值作为当前线程的Memcache操作句柄输出,若否,则进行创建一个新句柄作为当前线程的Memcache操作句柄;
3)使用步骤2)获得的Memcache操作句柄对缓存系统进行存取操作。
所述的唯一标示符为每个线程的线程号。
所述的步骤2)中创建一个新句柄的具体步骤为:
1)获取当前线程的线程号,即线程的唯一标识符;
2)在内存中创建一个新的Memcache操作句柄;
3)获取新建句柄在内存中的地址;
4)在句柄管理器中插入一个新的元素,该元素以线程号作为Key,以新建句柄的地址作为Value。
所述的句柄管理器设置在数据存储系统服务器端。
与现有技术相比,本发明如下有益效果:
1)提升了在大并发访问的情况下的缓存系统数据存取速度,经测试,在8线程使用各自句柄并发访问Memcache缓存系统时,其访问速度为使用公用句柄时的4至8倍。
2)由于使用了各自的句柄,各线程在访问缓存系统时,无需为争夺共用的句柄而产生锁竞争,提高了获取句柄的速度。
3)由于各线程使用了各自的句柄,也就拥有了各自的连接,一个线程的句柄发生异常不会影响其它线程对缓存系统的访问,因此可以有效提高系统的稳定性。
附图说明
图1为本发明的整体结构示意图;
图2为线程创建句柄过程示意图;
图3为线程获取句柄过程示意图;
图4为数据存储系统内部结构示意图
图5为数据存储系统使用实例结构图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
一种缓存系统数据存取方法,数据存储系统通过该存取方法并发访问Memcache缓存系统的数据时,使用多个线程,每个线程均拥有一个独立的、属于自己的Memcache操作句柄(即一条访问Memcache缓存系统的连接),如图1中,线程1~4均分别对应操作句柄1~4。而为了能够建立线程和Memcache句柄的一一对应关系,需使用一些变量唯一地标识各个线程,即每个线程都需要一个唯一标识符(Unique Identifier)。线程使用自己的Memcache操作句柄进行数据存取,多个线程不再共用单独的一条连接。数据存储系统服务器端中维护一个句柄管理器(map容器),每个所述线程的唯一标识符和Memcache操作句柄以Key-Value键值对的形成存储在句柄管理器中。句柄管理器用于存储键和值之间的一一对应关系,其保证在多线程并发访问Memcache时,各线程能够快速定位属于自己的操作句柄,并将其取出后使用。
每个线程访问Memcache缓存系统的具体步骤包括:
(1)获取线程本身的唯一标识符;
(2)查找句柄管理器中是否存在键为此唯一标识符的元素,如果存在,则该线程对应的Memcache操作句柄便是元素的值,执行句柄获取步骤;如果不存在,则表示目前没有与该线程对应的Memcaehe操作句柄,执行句柄创建步骤。
(3)使用取出的或新创建的Memcache操作句柄,对缓存系统进行存取操作。
每个线程都有一个唯一的线程号,可以唯一地标识线程自身。而map容器的Key-Value存储特性可以很好地将线程号和属于线程的句柄建立一一对应的关系,因此线程的线程号可以是作为线程的唯一标识符的良好选择。
句柄创建步骤:
如图2所示,为每个线程创建新句柄的过程如下:
(1)获取当前线程的线程号;
(2)在内存中创建一个新的Memcache句柄;
(3)获取新建句柄在内存中的地址;
(4)在句柄管理map容器中插入一个新的元素,该元素以线程号作为Key,以新建句柄的地址作为Value。
句柄获取步骤:
如图3所示,获取属于每个线程的句柄的过程如下:
(1)获取当前线程的线程号;
(2)检查句柄管理map容器中是否存在键为该线程号的元素;
(3)如果存在该元素,则返回该元素的值,即为对应于该线程的句柄,否则执行句柄创建步骤。
如图4所示,数据存储系统服务端创建一个句柄管理器,专门用于维护与Memcache缓存系统连接的各个句柄。各句柄的属性由句柄管理器统一设置。数据存储系统获取操作缓存系统的句柄都需要通过句柄管理器获得,句柄管理器对各个线程各自的缓存操作句柄进行维护。
如图5所示,以4个客户端为例,各客户端向存储系统写入数据时,需先把数据写入写缓存系统,由数据存储系统自行从写缓存系统中读取数据并存储于磁盘,再将数据写入读缓存系统,供客户端能够快速读取数据。由于Memcache容量有限,当其容量满之后再次往其中写入数据将会导致之前数据丢失,故只适合作为读缓存系统,而写缓存系统需要使用磁盘缓存。客户端发送数据到数据存储系统的过程如下:
(1)各客户端建立一个与写缓存系统的连接;
(2)各客户端将各自的大量数据发送给写缓存系统;
(3)数据存储系统为各个客户端创建一个线程用于读取其发送的数据;
(4)通过各个线程,数据存储系统为各个客户端创建一个线程用于访问写缓存系统,每个线程拥有一个缓存访问句柄,即对写缓存系统的连接;
(5)使用各个连接,将属于各客户端的数据并发地从写缓存系统中读入数据存储系统,并存储在底层磁盘介质中;
(6)数据存储系统为各个客户端创建一个线程用于将其写入的数据发送至读缓存系统;
(7)数据存储系统为各个客户端创建一个线程用于访问读缓存系统,每个线程拥有一个缓存访问句柄,即对读缓存系统的连接;
(8)使用各个连接,将各客户端的数据并发地写入读缓存系统中。

Claims (3)

1.一种缓存系统数据存取方法,其特征在于,数据存储系统通过该存取方法并发访问Memcache缓存系统的数据时,每个线程均拥有一个独立的、属于自己的Memcache操作句柄和一个唯一标识符,线程使用自己的Memcache操作句柄进行数据存取,每个所述线程的唯一标识符和Memcache操作句柄以Key-Value键值对的形成存储在句柄管理器中,每个线程访问Memcache缓存系统的具体步骤包括:
1)获取线程本身的唯一标识符;
2)查找句柄管理器中是否存在键为当前唯一标识符的元素,若是,则将该键对应的值作为当前线程的Memcache操作句柄输出,若否,则进行创建一个新句柄作为当前线程的Memcache操作句柄;
3)使用步骤2)获得的Memcache操作句柄对缓存系统进行存取操作;
所述的步骤2)中创建一个新句柄的具体步骤为:
1)获取当前线程的线程号,即线程的唯一标识符;
2)在内存中创建一个新的Memcache操作句柄;
3)获取新建句柄在内存中的地址;
4)在句柄管理器中插入一个新的元素,该元素以线程号作为Key,以新建句柄的地址作为Value。
2.根据权利要求1所述的一种缓存系统数据存取方法,其特征在于,所述的唯一标识符为每个线程的线程号。
3.根据权利要求1所述的一种缓存系统数据存取方法,其特征在于,所述的句柄管理器设置在数据存储系统服务器端。
CN201410049160.5A 2014-02-12 2014-02-12 一种缓存系统数据存取方法 Active CN103853504B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410049160.5A CN103853504B (zh) 2014-02-12 2014-02-12 一种缓存系统数据存取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410049160.5A CN103853504B (zh) 2014-02-12 2014-02-12 一种缓存系统数据存取方法

Publications (2)

Publication Number Publication Date
CN103853504A CN103853504A (zh) 2014-06-11
CN103853504B true CN103853504B (zh) 2017-04-26

Family

ID=50861218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410049160.5A Active CN103853504B (zh) 2014-02-12 2014-02-12 一种缓存系统数据存取方法

Country Status (1)

Country Link
CN (1) CN103853504B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897278B (zh) * 2015-12-17 2020-10-30 阿里巴巴集团控股有限公司 用于键值数据库的数据读写处理方法及设备
CN108628540A (zh) * 2017-03-22 2018-10-09 深圳市优朋普乐传媒发展有限公司 数据存储装置及方法
CN109739468A (zh) * 2019-01-07 2019-05-10 Oppo广东移动通信有限公司 运行优化方法、装置、存储介质及终端设备
CN113626212A (zh) * 2021-07-12 2021-11-09 广州致远电子有限公司 一种基于句柄结构的对象管理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694065B2 (en) * 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
CN101729597A (zh) * 2008-10-17 2010-06-09 因特伟特公司 利用缓存的登录对web服务器上动态内容的隔离匿名访问
CN102880557A (zh) * 2012-09-13 2013-01-16 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存
CN102999522A (zh) * 2011-09-15 2013-03-27 阿里巴巴集团控股有限公司 一种数据存储方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694065B2 (en) * 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
CN101729597A (zh) * 2008-10-17 2010-06-09 因特伟特公司 利用缓存的登录对web服务器上动态内容的隔离匿名访问
CN102999522A (zh) * 2011-09-15 2013-03-27 阿里巴巴集团控股有限公司 一种数据存储方法和装置
CN102880557A (zh) * 2012-09-13 2013-01-16 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存

Also Published As

Publication number Publication date
CN103853504A (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
CN107169083B (zh) 公安卡口海量车辆数据存储与检索方法及装置、电子设备
US8161244B2 (en) Multiple cache directories
US9871727B2 (en) Routing lookup method and device and method for constructing B-tree structure
CN103559217A (zh) 一种面向异构数据库的海量组播数据入库实现方法
US20160239529A1 (en) Methods and systems of splitting database indexes and digests
CN103853504B (zh) 一种缓存系统数据存取方法
CN105224255B (zh) 一种存储文件管理方法及装置
EP2706468A1 (en) Data storage and query method
CN102420814A (zh) 一种数据访问方法、装置及服务器
Adya et al. Fast key-value stores: An idea whose time has come and gone
CN110737682A (zh) 一种缓存操作方法、装置、存储介质和电子设备
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
PH12014501932B1 (en) Data storage method and device
CN103116627A (zh) 一种高并发soa技术访问数据库的方法和系统
CN104601562A (zh) 游戏服务器与数据库的交互方法和系统
US11775480B2 (en) Method and system for deleting obsolete files from a file system
CN106599091A (zh) 基于键值存储的rdf图结构存储和索引方法
US9836491B1 (en) Method and apparatus for hardware-implemented AVL tree updates
US10747773B2 (en) Database management system, computer, and database management method
KR101640733B1 (ko) 인-메모리 데이터베이스 기반의 데이터 관리 시스템 및 그 방법
US20220342888A1 (en) Object tagging
CN106874119A (zh) 基于同质内存扫描的合并方法及装置
JP4313845B2 (ja) マルチインスタンス・インメモリ・データベース
CN106202271A (zh) Ota的产品数据库的读取方法
CN109408505A (zh) 一种布隆过滤器的生成方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 201112 Shanghai, Minhang District, United Airlines route 1188, building second layer A-1 unit 8

Applicant after: SHANGHAI EISOO INFORMATION TECHNOLOGY CO., LTD.

Address before: 200072 room 3, building 840, No. 101 Middle Luochuan Road, Shanghai, Zhabei District

Applicant before: Shanghai Eisoo Software Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211229

Address after: 410005 room 2801, 28 / F, Shimao business center, No. 393, Jianxiang Road, Dingwangtai street, Furong district, Changsha City, Hunan Province

Patentee after: Hunan aisuizhizhen Information Technology Co.,Ltd.

Address before: 201112 unit A-1, 2nd floor, building 8, No. 1188, LIANHANG Road, Minhang District, Shanghai

Patentee before: SHANGHAI EISOO INFORMATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right