公开/公告号CN112241407A
专利类型发明专利
公开/公告日2021-01-19
原文格式PDF
申请/专利权人 重庆锐云科技有限公司;
申请/专利号CN202010958455.X
申请日2020-09-11
分类号G06F16/22(20190101);G06F16/2453(20190101);G06F16/2455(20190101);
代理机构50234 重庆智慧之源知识产权代理事务所(普通合伙);
代理人高彬
地址 401121 重庆市渝北区山茶路70号1幢5-2
入库时间 2023-06-19 09:36:59
技术领域
本发明涉及高尔夫球场管理技术领域,尤其涉及高尔夫球场会员数据处理方法、客户管理系统及存储介质。
背景技术
高尔夫(golf)俗称小白球,是一种以棒击球入穴的室外球类运动。如今,现代高尔夫球运动已经成为贵族运动的代名词。随着国家经济发展,人民生活水平的提高,高尔夫球逐渐被人们所熟知,越来越多的人慢慢开始接触这项运动。球会一般采用会员登记制度,以方便对球会会员的管理,满足球会会员在线上预约、消费、现场服务等方面的需求,从而提高服务质量。
在客户到访球会现场时,前台工作人员录入客户信息,例如客户姓名或电话,快速从后台查询该客户的会员信息,以实现订场、消费等需求。目前,会员信息都是通过MySQL数据库存储,在进行会员信息查询时,会导致数据响应不及时,给工作人员带来卡顿的感觉。并给MySQL数据库造成很大的压力,如果球场客户量过大,可能会使数据库崩溃。
发明内容
本发明提供的高尔夫球场会员数据处理方法、客户管理系统及存储介质,主要解决的技术问题是:当前球会会员信息存储于数据库影响查询效率。
为解决上述技术问题,本发明提供一种高尔夫球场会员数据处理方法,包括:
从存储高尔夫球场会员信息的目标数据库中,获取高尔夫球场会员信息的第一列表集合,所述会员信息包括会员名称、会员身份及会员ID;
针对每一会员,将其会员名称+空格+会员身份进行拼接,作为第一字段;
将每一会员的第一字段中的所有字符转化为十六进制字符串;
生成空白的第二列表集合,将各会员的十六进制字符串按照数值进行升序排序,并存储至所述第二列表集合中,各会员对应所述第二列表集合中的下标为2i-1;将各会员的会员ID存储至所述第二列表集合中,对应第二列表集合中的下标为2i;所述i为所述会员的十六进制字符串排名;所述第二列表集合长度是所述第一列表集合长度的两倍;
将所述第二列表集合存储至Redis缓存中。
可选的,在所述将所述第二列表集合存储至Redis缓存中之后,还包括:
获取查询请求,包括待查询关键词;
判断所述待查询关键词类型;
在所述待查询关键词类型为文字类型时,将所述待查询关键词转化为十六进制字符串;
在所述第二列表集合且下标为奇数的数据中,查找与所述待查询关键词对应的十六进制字符串匹配的字符数据,将所述匹配的字符数据对应的目标会员信息反馈给查询终端。
可选的,所述将所述匹配的字符数据对应的目标会员信息反馈给查询终端包括:
基于所述匹配的字符数据在所述第二列表集合中的下标,确定所述目标会员信息在所述第一列表集合中的目标下标,根据所述目标下标直接从所述第一列表集合中提取所述目标会员信息,以反馈给查询终端。
可选的,所述目标会员信息包括会员名称、会员身份以及会员ID。
可选的,所述将所述匹配的字符数据对应的目标会员信息反馈给查询终端包括:
提取所述匹配的字符数据,以及相比于所述匹配的字符数据下标加1的会员ID,作为所述目标会员信息。
可选的,在所述待查询关键词类型为数字类型时,在所述第二列表集合且下标为偶数的数据中,查找与所述待查询关键词匹配的字符数据,将所述匹配的字符数据对应的目标会员信息反馈给查询终端。
可选的,在所述从存储高尔夫球场会员信息的目标数据库中,获取高尔夫球场会员信息的第一列表集合之前,还接收到数据存储指令。
本发明还提供一种高尔夫球场客户管理系统,包括数据存储模块,所述数据存储模块包括:
第一获取子模块,用于从存储高尔夫球场会员信息的目标数据库中,获取高尔夫球场会员信息的第一列表集合,所述会员信息包括会员名称、会员身份及会员ID;
第一处理子模块,用于针对每一会员,将其会员名称+空格+会员身份进行拼接,作为第一字段,并将每一会员的第一字段中的所有字符转化为十六进制字符串;
存储子模块,用于生成空白的第二列表集合,将各会员的十六进制字符串按照数值进行升序排序,并存储至所述第二列表集合中,各会员对应所述第二列表集合中的下标为2i-1;将各会员的会员ID存储至所述第二列表集合中,对应第二列表集合中的下标为2i;所述i为所述会员的十六进制字符串排名;所述第二列表集合长度是所述第一列表集合长度的两倍;并将所述第二列表集合存储至Redis缓存中。
可选的,还包括数据查询模块,所述数据查询模块包括:
第二获取子模块,用于获取查询请求,包括待查询关键词;
第二处理子模块,用于判断所述待查询关键词类型,在所述待查询关键词类型为文字类型时,将所述待查询关键词转化为十六进制字符串;
查询子模块,用于在所述第二列表集合且下标为奇数的数据中,查找与所述待查询关键词对应的十六进制字符串匹配的字符数据,将所述匹配的字符数据对应的目标会员信息反馈给查询终端。
本发明还提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上所述的高尔夫球场会员数据处理方法的步骤。
本发明的有益效果是:
根据本发明提供的高尔夫球场会员数据处理方法、客户管理系统及存储介质,该方法包括:从存储高尔夫球场会员信息的目标数据库中,获取高尔夫球场会员信息的第一列表集合,会员信息包括会员名称、会员身份及会员ID;针对每一会员,将其会员名称+空格+会员身份进行拼接,作为第一字段;将每一会员的第一字段中的所有字符转化为十六进制字符串;生成空白的第二列表集合,将各会员的十六进制字符串按照数值进行升序排序,并存储至第二列表集合中,各会员对应第二列表集合中的下标为2i-1;将各会员的会员ID存储至第二列表集合中,对应第二列表集合中的下标为2i;i为会员的十六进制字符串排名;第二列表集合长度是第一列表集合长度的两倍;将第二列表集合存储至Redis缓存中。本方法通过将需要访问的会员数据存储到Redis缓存中,并使用特定的数据结构存储,能够快速的获取到相匹配的会员数据,解决会员数据查询存在卡顿的体验感,同时减少数据库的负担,使数据库有更多的资源处理其他请求,防止在访问量过大的情况下导致的数据库崩溃。
附图说明
图1为本发明实施例一的高尔夫球场会员数据处理方法流程示意图;
图2为本发明实施例三的高尔夫球场客户管理系统结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
请参见图1,图1为本实施例提供的高尔夫球场会员数据处理方法流程示意图,该方法主要包括如下步骤:
S101、监测数据存储指令。
本实施例中,可以预先设定数据更新存储周期,例如设置为1天,系统每间隔一天,确定监测到数据存储指令。在本发明可选的实施例中,系统可以对数据库中存储的会员进行周期性的检测,当在当前周期内,检测到数据库相对于上一周期存在会员数据的更新,包括新增或更改时,确定监测到数据存储指令,从而触发系统执行步骤S102,从而更好地实现自动化数据存储过程。
S102、从存储高尔夫球场会员信息的目标数据库中,获取高尔夫球场会员信息的第一列表集合,会员信息包括会员名称、会员身份及会员ID。
高尔夫球场会员信息存储于目标数据库,数据库可满足大数据量的存储,但是存储和读取效率不高,对此本实施例在数据库存储的基础上,将相关信息存储到Redis中,在保证大数据量存储的要求下,提高对数据存储和查询的效率,解决数据存储和查询过程中存在卡顿的问题,同时数据查询不必通过数据库处理,减少数据库的处理负荷,让数据库有的计算资源处理其他请求,防止在访问量过大的情况下导致的数据库崩溃。
数据库中球场会员信息以列表集合形式进行存储,参见如下表1所示:
表1
S103、针对每一会员,将其会员名称+空格+会员身份进行拼接,作为第一字段。
S104、将每一会员的第一字段中的所有字符转化为十六进制字符串。
在汉字编码中,一个汉字字符对应一个区号和一个位号,区号、位号的范围均为01-94,组成的代码称为“区位码”。把国标码的汉字代码中的区码与位码分别换算为16进制数,那么一个汉字将对应一个4位的16进制数。如果再分别加上十六进制数80,即为该汉字的机内码。
S105、生成空白的第二列表集合。
本实施例中,第二列表集合长度是第一列表集合长度的两倍。
S106、将各会员的十六进制字符串按照数值进行升序排序,并存储至第二列表集合中,各会员对应第二列表集合中的下标为2i-1;将各会员的会员ID存储至第二列表集合中,对应第二列表集合中的下标为2i;其中i为会员的十六进制字符串排名,i为大于等于1的整数。
将各会员的十六进制字符串按照数值大小进行排序,是为了后续提高数据查询的效率,避免依次进行字符串比对匹配,导致查询效率低,处理量大的问题。将会员名称+空格+会员身份对应的十六进制字符串,与会员ID分开交叉存储,在数据查询阶段进行关键字匹配时,避免出现ID和关键字相同而导致匹配的数据不准确的问题。
以上述表1为例,对其中的会员信息进行处理,假设“刘**+空格+身份1”、“王**+空格+身份1”、“金**+空格+身份2”对应的十六进制字符串,为字符串1,字符串2,字符串3;数值升序排名分别为1,2,3,则对应的第二列表集合可参见如下表2所示:
表2
S107、将第二列表集合存储至Redis缓存中。
S108、监测查询请求,其中查询请求包括待查询关键词。
系统通过监测前台工作人员在客户端发起的查询请求,在Redis中进行数据查询,并反馈给查询终端。通常,待查询关键词例如为会员姓名、电话、会员身份等。
S109、判断待查询关键词类型,在待查询关键词类型为文字类型时,转至步骤S110;在待查询关键词类型为数字类型时,转至步骤S113。
一般会员姓名、会员身份等作为关键词,则关键词类型为文字类型,电话或ID,则关键词类型为数字类型。
S110、将待查询关键词转化为十六进制字符串。
针对文字类型的待查询关键词,将其转化为十六进制字符串;可选的,针对数字类型的待查询关键词,可不必进行换算。
S111、在第二列表集合下标为奇数的数据中,查找与待查询关键词对应的十六进制字符串匹配的字符数据。
针对文字类型的待查询关键词,表明为会员名称或会员身份信息,直接在第二列表集合下标为奇数的数据中进行查询,提高查找效率。
首先,从第二列表集合下标为奇数的数据中选取排名最中间的字符串进行比较,例如共计1001个客户,首先选取排名第501的客户的字符串,与待查询关键词对应的十六进制字符串进行比对;若客户数量为偶数,例如有1002名客户,则可以从排名第501或排名第502的两个客户中任意选取一个进行比对。
若该客户的字符串存在与该待查询关键词对应的十六进制字符串完全相同的字符串,则将该客户作为匹配的客户,也即是需要查询的客户。若不匹配,判断待查询关键词与该客户的字符数据的数值大小,如果大于,从第一次选取客户与排名最大区间中选择排名靠中间(即排名约3/4的位置)的客户,作为第二次选取的客户进行比对;如果小于,则从第一次选取客户与排名最小客户这个区间中,选择排名靠中间(即排名约1/4的位置)的客户,作为第二次选取的客户进行比对。
若第二次选择的客户是排名为3/4的客户,且第二次选取的客户与待查询关键词对应的字符串也不匹配,判断该待查询关键词对应的字符串数值与该第二次选取客户对应字符串数值大小,若大于,则从第二次选取的客户(排名为3/4)与排名最大客户的区间中,选取排名靠中间(即排名约7/8的位置)的客户,作为第三次选取的客户;若小于,则从第二次选取的客户(排名为3/4)与第一次选取的客户(排名为1/2)的区间中,选取排名靠中间的客户(即排名约为5/8),作为第三次选取的客户进行比对,依次类推,直至得到匹配的客户为止。
当选取的两个客户区间内,不存在客户,或者仅存在一个客户,但该客户仍与待查询关键词对应的字符串不匹配,则返回查询结果为未查询到匹配客户。
基于上述匹配方式,可很大程序减少对比次数,从而提高查询效率。
S112、将匹配的字符数据对应的目标会员信息反馈给查询终端。
目标会员信息包括会员名称、会员身份以及会员ID。
本实施例中,提取匹配客户第一字段对应的十六进制字符数据,以及相比于匹配的字符数据下标加1的会员ID,作为目标会员信息。客户端获取到目标会员信息,每4个长度的字符串转为一个char字符(原来的字符是一个16位的2进制数字,本实施例转换成了一个4位的16进制数字存入到Redis中的,这样原来的每一个字符就变成了一个长度为4的字符串,相比于二进制可以减少比对次数,提高匹配效率),还原为会员名称+空格+会员身份的字符串,将下标加1会员ID取出一起封装为一个对象。
S113、在第二列表集合且下标为偶数的数据中,查找与待查询关键词匹配的字符数据,将匹配的字符数据对应的目标会员信息反馈给查询终端。
在待检索关键词为数字类型时,表明是基于会员ID或者电话进行查询,因此直接在第二列表集合下标为偶数的数据中进行查找,提高查询效率。
本实施例提供的高尔夫球场会员数据处理方法,通过将需要访问的会员数据存储到Redis缓存中,并使用特定的数据结构存储,能够快速的获取到相匹配的会员数据,解决会员数据查询存在卡顿的体验感,同时减少数据库的负担,使数据库有更多的资源处理其他请求,防止在访问量过大的情况下导致的数据库崩溃。
实施例二:
本实施例在上述实施例一的基础上,提供一种高尔夫球场会员数据处理方法,与实施例一不同的是,系统直接将查询到的匹配客户的会员信息发送给查询终端,无需查询终端基于字符串进行还原,具体的,基于匹配的字符数据在第二列表集合中的下标,确定目标会员信息在第一列表集合中的目标下标,根据目标下标直接从第一列表集合中提取目标会员信息,以反馈给查询终端。
实施例三:
本实施例在上述实施例一和/或实施例二的基础上,提供一种高尔夫球场客户管理系统,请参见图2,该系统包括数据存储模块21和数据查询模块22,其中数据存储模块21包括第一获取子模块211、第一处理子模块212及存储子模块213,数据查询模块22包括第二获取子模块221、第二处理子模块222、查询子模块223;其中
第一获取子模块211,用于从存储高尔夫球场会员信息的目标数据库中,获取高尔夫球场会员信息的第一列表集合,会员信息包括会员名称、会员身份及会员ID。
第一处理子模块212,用于针对每一会员,将其会员名称+空格+会员身份进行拼接,作为第一字段,并将每一会员的第一字段中的所有字符转化为十六进制字符串。
存储子模块213,用于生成空白的第二列表集合,将各会员的十六进制字符串按照数值进行升序排序,并存储至第二列表集合中,各会员对应第二列表集合中的下标为2i-1;将各会员的会员ID存储至第二列表集合中,对应第二列表集合中的下标为2i;i为会员的十六进制字符串排名;第二列表集合长度是第一列表集合长度的两倍;并将第二列表集合存储至Redis缓存中。
第二获取子模块221,用于获取查询请求,包括待查询关键词。
第二处理子模块222,用于判断待查询关键词类型,在待查询关键词类型为文字类型时,将待查询关键词转化为十六进制字符串。
查询子模块223,用于在第二列表集合且下标为奇数的数据中,查找与待查询关键词对应的十六进制字符串匹配的字符数据,将匹配的字符数据对应的目标会员信息反馈给查询终端。具体请参见上述实施例一和/或实施例二中的描述,在此不再赘述。
实施例四:
本实施例提供一种计算机可读存储介质,存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如实施例一和/或实施例二所述的高尔夫球场会员数据处理方法的步骤。具体请参见上述实施例一和/或实施例二中的描述,在此不再赘述。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
机译: 服务器单元,客户端单元,设备单元,服务器单元的数据处理方法,客户端单元的数据处理方法,设备单元的数据处理方法以及存储介质
机译: 服务器单元,客户端单元,设备单元,服务器单元的数据处理方法,客户端单元的数据处理方法,设备单元的数据处理方法以及存储介质
机译: 服务器单元,设备单元,客户端单元,服务器单元的数据处理方法,设备单元的数据处理方法,客户端单元的数据处理方法以及存储介质