CN109165101B - 基于Redis的内存服务器设计方法 - Google Patents

基于Redis的内存服务器设计方法 Download PDF

Info

Publication number
CN109165101B
CN109165101B CN201811057150.0A CN201811057150A CN109165101B CN 109165101 B CN109165101 B CN 109165101B CN 201811057150 A CN201811057150 A CN 201811057150A CN 109165101 B CN109165101 B CN 109165101B
Authority
CN
China
Prior art keywords
data
terminal
server
redis
database
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
CN201811057150.0A
Other languages
English (en)
Other versions
CN109165101A (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.)
Nanjing Chaoyan Intelligent Technology Co ltd
Original Assignee
Nanjing Chaoyan Intelligent 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 Nanjing Chaoyan Intelligent Technology Co ltd filed Critical Nanjing Chaoyan Intelligent Technology Co ltd
Priority to CN201811057150.0A priority Critical patent/CN109165101B/zh
Publication of CN109165101A publication Critical patent/CN109165101A/zh
Application granted granted Critical
Publication of CN109165101B publication Critical patent/CN109165101B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

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

Abstract

本发明提出了一种基于Redis的内存服务器设计方法,包括:为每个终端分配唯一的key;启动monitor进程,接收外部终端发送的数据链,对上述数据链进行解析并根据终端的终端号归纳到内存服务器对应终端号的key中,将每一条解析后的数据存入一个map集合,获取这条数据的终端号,设置内存服务器的key,用于存储相匹配终端的数据;将每一个终端的所有数据存入到redis内存服务器中与该终端相匹配的key中;判断内存服务器中数据是否满足删除条件,如果满足则对内存服务器中的数据进行删除管理。本发明具有处理大规模并发的条件,内存服务器减轻了云平台数据处理压力,提高了其性能,通过批量插入数据库的方法,减轻了对数据库的频繁操作。

Description

基于Redis的内存服务器设计方法
技术领域
本发明涉及内存服务器技术领域,特别涉及一种基于Redis的内存服务器设计方法。
背景技术
在以往的方案中,云平台大量数据的到来,都是用Redis来暂存数据的。Redis是一个可基于内存亦可持久化的日志型、Key-Value数据库,如果只使用Redis,造成的问题是没有与数据库进行交互,在数据的存储上存在一定的缺陷。而云平台负责对终端数据的接收,保存以及显示。如果实时地将数据不断地插入数据库,这会加大数据库的负担。
发明内容
本发明的目的旨在至少解决所述技术缺陷之一。
为此,本发明的目的在于提出一种基于Redis的内存服务器设计方法。
为了实现上述目的,本发明的实施例提供一种基于Redis的内存服务器设计方法,包括如下步骤:
步骤S1,为每个终端分配唯一的key,其中,以所述终端的终端号作为key;并为内存服务器分配唯一的WebKey,每个所述WebKey包括由相关终端的key和数据信息拼接成的字符串链表结构;
步骤S2,启动monitor进程,接收外部终端发送的数据链,对上述数据链进行解析并根据终端的终端号归纳到内存服务器对应终端号的key中,将每一条解析后的数据存入一个map集合,获取这条数据的终端号,设置内存服务器的key,用于存储相匹配终端的数据;将每一个终端的所有数据存入到redis内存服务器中与该终端相匹配的key中;
步骤S3,判断内存服务器中数据是否满足删除条件,如果满足则对内存服务器中的数据进行删除管理。
进一步,在所述步骤S2中,
启动Monitor进程;
接收外部终端发送来的数据链;
由于接收到的数据是以逗号分隔的数据链,根据采集服务器发送来的字段位置匹配,将字段与数据相匹配,即对数据进行解析;
然后,将每一条解析后的数据存入一个map集合,获取这条数据的标志符即终端号;
自定义前缀加终端号,以设置内存服务器的key,用于存储相匹配终端的数据;
将每一个终端的所有数据存入到redis中与该终端相匹配的key中。
进一步,在所述步骤S2中,将每条解析后的数据存入map集合,以各自独有的终端号的key当作是map的key,以各自终端的消息体作为map对应的value;
利用HashMap将对象的hashCode返回的哈希值进行进一步处理,将不同的元素放到了不同的区块或桶中,在下次查找该对象的时候,计算其哈希值,依据哈希值确定区块或桶,然后在这个小范围内查找元素。
进一步,在所述步骤S3中,内存服务器的删除条件,包括以下一种或多种:
(1)单终端key数据存储达到上限,并将最早存储的一般数据存入数据库,此时该key的另一半数据将会被删除;
(2)多终端同时存最新一条数据到设定的key中,当其中某终端的数据非最新数据时,需要删除该条数据并存入新的数据;
(3)当终端停止发送数据时,该终端将会有超过上限一半的数据未存储到数据库,此时需要将这些数据存入数据库,并在该终端再次发数据时删除这些数据,以防止出现数据重复插入数据库的问题。
进一步,当满足条件(1)时,删除内存服务器中数据,包括:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答
由采集服务器发送应答信息;
Montior进行接收采集服务器的应答信息,获取在线终端号以及状态码;
获取每个在线终端所有redis内存服务器里的数据;
判断该在线终端所储存的redis里存储的数据是否大于预设值;
取出最早插入的一半数据,转存至数据库中;
然后删除redis内存服务器中这些插入数据库的数据。
进一步,当满足条件(2)时,删除内存服务器中数据,包括:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答
由采集服务器发送应答信息;
Montior进程接收采集服务器的应答信息,获取在线终端号以及状态码;
判断redis内存服务器中是否存在webkey,该webkey用于存储所有终端的最新一条数据;
解析该webkey中的所有数据,并获取每条数据对应的终端号;
判断这些终端的状态码是否为1;
如果是则删除webkey中这个终端对应的数据;
获取这个终端存在redis里的最新一条数据;
将这条最新的数据插入webkey中。
进一步,当满足条件(3)时,删除内存服务器中数据,包括:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答
由采集服务器发送应答信息;
Montior进程接收采集服务器的应答信息,获取在线终端号以及状态码;
获取状态码为1的即在线终端号;
查询终端状态表,判断以上终端号在数据表中的状态是否不为1;
如果是,则删除这些终端存储在内存服务器中所有数据。
进一步,所述内存服务器和数据库同步调用,批量插入数据。
进一步,所述Monitor进程还用于对每个终端赋予每个终端状态码,并将上述终端与对应的状态码state存入数据库中,包括如下步骤:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答
由采集服务器发送应答信息;
Montior接收采集服务器的应答信息,获取在线终端号以及状态码;
判断是否满足state==0或者state==2,如果满足则执行1),否则执行2);同事根据数据库terminal表,判断是否state==1;如果是则将终端号存入第一list中,然后判断终端号是否相同,执行1);
1)如果是则将终端号存入集合中;
判断终端号是否相同,如果相同则将终端号对应的Redis里面的数据存入数据库中;否则结束;
2)如果否则将终端号存入list中;
判断终端号是否相同;
如果是则删除该终端对应的Redis中的所有数据;否则结束。
根据本发明实施例的基于Redis的内存服务器设计方法,通过Redis将数据插入WebKey中,并做到了实时展示,并且将内存数据以Map的形式缓存起来,做到了及时地插入以及迅速地查询,实现数据库的批量处理方式。本发明提出新型内存服务器的概念,用于对数据进行整理,减轻数据库等压力,通过提出的内存服务器概念实现云平台内存的合理分配。本发明具有处理大规模并发的条件,内存服务器减轻了云平台数据处理压力,提高了其性能,通过批量插入数据库的方法,减轻了对数据库的频繁操作。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明实施例的基于Redis的内存服务器设计方法的流程图;
图2为根据本发明实施例的内存服务器的数据输入流程图;
图3为根据本发明实施例的第一种条件下的内存服务器的数据删除流程图;
图4为根据本发明实施例的第二种条件下的内存服务器的数据删除流程图;
图5为根据本发明实施例的第三种条件下的内存服务器的数据删除流程图;
图6为根据本发明实施例的终端状态识别的流程图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明提出一种基于Redis的内存服务器的设计方法,采用时间片轮询调度的方案去分配内存,利用不同的key进行分配,在一定时间内对Redis数据进行整理,然后批量的存入数据库。
如图1所示,本发明实施例的基于Redis的内存服务器设计方法,包括如下步骤:
步骤S1,为每个终端分配唯一的key,其中,以终端的终端号作为key;并为内存服务器分配唯一的WebKey,每个WebKey包括由相关终端的key和数据信息拼接成的字符串链表结构。
具体的,本发明实行不同类型key的分配策略:
(1)每个终端的单独分配的key,由于每个终端号在出厂时都是唯一的,因此以终端号作为key时,具有唯一性,且辨识度很高、容易查找。
(2)向页面分配唯一的WebKey,里面存放多条简短的数据,每条数据都是由终端号及三到四位重要信息,以“逗号”的形式拼接而成的字符串链表结构。
每个WebKey中存在三到四位的重要信息,而单独的终端key里面数据位数是较大的,少则十几位,多则三十几位。如果每次都将这些数据全部解析的话,会极大的降低了CPU的处理性能,几个终端这样未必会有明显差异。当终端数量以量级增长的时候,其效果必然会出现一边倒的局势。在存有WebKey的服务器访问时,几乎感受不到延迟,能够迅速的查询到对应的终端并将其显示出来,而没有WebKey的服务器明显会存在较长的延迟,具体时间视终端量级以及终端信息位数而定,数量越大,延迟越大,信息位数越大,延迟越大。
步骤S2,启动monitor进程,接收外部终端发送的数据链,对上述数据链进行解析并根据终端的终端号归纳到内存服务器对应终端号的key中,将每一条解析后的数据存入一个map集合,获取这条数据的终端号,设置内存服务器的key,用于存储相匹配终端的数据;将每一个终端的所有数据存入到redis内存服务器中与该终端相匹配的key中。
下面首先对Monitor进程和采集服务器的功能进行说明:Monitor进程用于实现数据接收、内存服务器的数据插入与删除以及对数据库的批量存储功能的服务器中间层。
采集服务器是用于获取数据并按照字段顺序将数据以逗号拼接成数据链发送给monitor的数据层。
具体的,如图2所示,启动Monitor进程;接收外部终端发送来的数据链;由于接收到的数据是以逗号分隔的数据链,根据采集服务器发送来的字段位置匹配,将字段与数据相匹配,即对数据进行解析。
然后,将每一条解析后的数据存入一个map集合,获取这条数据的标志符即终端号。自定义前缀加终端号,以设置内存服务器的key,用于存储相匹配终端的数据;将每一个终端的所有数据存入到redis中与该终端相匹配的key中。
即,monitor进程启动后,接收外在输入的数据链,上述数据链接将会经过解析并根据标志符终端号归纳到内存服务器对应终端号的key中。而这些数据链也会根据终端发来的字段顺序解析成以键值对的方式存在map集合中。
下面对链表至map的生成方法进行说明:
将每个终端号作为单独的一个key存入缓存中,每个key中都是以一条条的链表形式存入的,当终端数量上升到一定的程度,就会在缓存中存在大量的终端号形式的key,每一个对应的key里面都有一条条对应的数据。这就相当于形成了一个庞大的矩阵,形成一个map,以各自独有的终端号的key当作是map的key,以各自终端的消息体作为map对应的value。HashMap是实现了Map接口的类,属于线程不同步的,且在只有一个线程访问时效率较高。HashMap采用的是“链表数组”的数据结构,即数组和链表的结合体。在HashMap中,它为了提高查找的效率使用了分块查找的原理。而hashCode的存在就是为了提高HashMap的性能。hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值,HashMap会将对象的hashCode返回的哈希值进行进一步处理,这样就有规律的把不同的元素放到了不同的区块或桶中。下次查找该对象的时候,还是计算其哈希值,依据哈希值确定区块或桶,然后在这个小范围内查找元素,这样就快多了。正是由于使用了HashMap的工作原理,极大地提高了精准查询的效率,提高了CPU的处理性能。
步骤S3,判断内存服务器中数据是否满足删除条件,如果满足则对内存服务器中的数据进行删除管理。
具体的,内存服务器的删除条件,包括以下一种或多种:
(1)单终端key数据存储达到上限,并将最早存储的一般数据存入数据库,此时该key的另一半数据将会被删除。
根据终端号设置该终端号对应的key,当终端不断发送实时数据时,这些数据就会存入该key中。此时设置该key中数据存储上限。在本发明的一个实施例中,上限由前端界面对数据使用量来确定。
当key中数据达到上限时,需要将最先存入的一半数据插入数据库中。此时可以新建一个线程来完成这项操作。该线程中可以采用死循环的方式,并设置线程的休眠时间。例如:每循环一次,休眠时间为1分钟。
每当线程运行时,只要发现key中的数据大于上限时,就会将该key中的最早一半数据批量存入数据库中。并且将这一半已经存入数据库的数据从key中删除,防止数据重复插入。
如图3所示,首先启动Monitor进程;发送请求至采集服务器,然后等待采集服务器应答。由采集服务器发送应答信息,Montior进行接收采集服务器的应答信息,获取在线终端号以及状态码,获取每个在线终端所有redis内存服务器里的数据。然后判断该在线终端所储存的redis里存储的数据是否大于预设值,如果是则取出最早插入的一半数据,转存至数据库中;然后删除redis内存服务器中这些插入数据库的数据。
(2)多终端同时存最新一条数据到设定的key中,当其中某终端的数据非最新数据时,需要删除该条数据并存入新的数据。
如图4所示,首先启动Monitor进程,发送请求至采集服务器,等待采集服务器应答。然后由采集服务器发送应答信息;Montior进程接收采集服务器的应答信息,获取在线终端号以及状态码;判断redis内存服务器中是否存在webkey,该webkey用于存储所有终端的最新一条数据。解析该webkey中的所有数据,并获取每条数据对应的终端号;判断这些终端的状态码是否为1;如果是则删除webkey中这个终端对应的数据;获取这个终端存在redis里的最新一条数据;将这条最新的数据插入webkey中。
多终端同时发送数据,并且需要获取这些终端最新一条数据的局部数据。从3.1可知终端发送的数据是以逗号拼接的数据链。针对于最新一条的实时数据,前端可能只需要整条数据的某些数据。这里需要对数据进行解析,以“,”分隔开,将需要的数据在以逗号拼接(例如:aa,bb,cc,dd,ee...)。将这条整理后的数据存入key中(注意:这条拼接的数据必须要有与终端对应的唯一标识码)。终端的不断发送数据,导致该key中对应终端的最新实时数据在不断发生变化,所以key中的最新数据也需要不断的更新。
由于内存服务器很少会有自动更新的方法。所有需要以循环交替增加删除的方法来代替。当线程运行时,判断终端是否在发送数据。当确定终端在发送数据时,首先删除key中对应该终端的已有历史数据。然后获取此终端的最新数据,并将这条数据通过处理后存入key中。
(3)当终端停止发送数据时,该终端将会有超过上限一半的数据未存储到数据库,此时需要将这些数据存入数据库,并在该终端再次发数据时删除这些数据,以防止出现数据重复插入数据库的问题。
如图5所示,首先启动Monitor进程,发送请求至采集服务器;然后等待采集服务器应答,由采集服务器发送应答信息。然后Montior进程接收采集服务器的应答信息,获取在线终端号以及状态码;获取状态码为1的即在线终端号。查询终端状态表,判断以上终端号在数据表中的状态是否不为1。如果是,则删除这些终端存储在内存服务器中所有数据。
具体的,这种情况下的删除其实就是为了防止数据的重复插入。当一个终端停止发送时,其中会留有超过最大上限一半的数据在内存服务器中。为了防止数据的丢失,需要将这些数据存入数据库中。但是为了保证前端对实时数据的获取,这些数据在存入数据库后还需要留在key中。这就导致当该终端再次发送数据时,这些数据就会重复插入数据库中。所以解决的办法就是添加终端的状态码。将终端设置为在线与非在线状态。当终端由在线变为非在线状态时,将该终端key中的所有数据全部存入数据库中,当该终端从非在线状态变为在线状态时,删除此终端中所有key中的数据。至此,就不会出现数据的丢失与重复插入的问题。
在本发明的一个实施例中,内存服务器和数据库同步调用,批量插入数据。内存服务器与数据库同步操作优势在于:内存服务器的存储数据放在内存中,读写数据较快,一般用于存入使用频率较高并且量较少的数据。数据库的数据存在磁盘中,常用于存储大量且不常用的数据。所以将内存服务器与数据库同步调用,既节约了CPU的处理内存,又增加了实时数据的读取效率,还确保数据的不可丢失性,并且可以对数据进行批量插入,提高了数据存储的性能和效率。
由于终端可能有多种状态,这些状态使得monitor需要对其进行不同操作。为了方便认出这些终端对应的状态,给终端赋予状态码,并将这些终端与对应的状态码存入数据库中。
如图6所示,Monitor进程还用于对每个终端赋予每个终端状态码,并将上述终端与对应的状态码state存入数据库中,包括如下步骤:
首先启动Monitor进程,发送请求至采集服务器,等待采集服务器应答。然后由采集服务器发送应答信息,Montior接收采集服务器的应答信息,获取在线终端号以及状态码。
判断是否满足state==0或者state==2,如果满足则执行1),否则执行2);同事根据数据库terminal表,判断是否state==1;如果是则将终端号存入第一list中,然后判断终端号是否相同,执行1);
1)如果是则将终端号存入集合中;
判断终端号是否相同,如果相同则将终端号对应的Redis里面的数据存入数据库中;否则结束;
2)如果否则将终端号存入list中;
判断终端号是否相同;
如果是则删除该终端对应的Redis中的所有数据;否则结束。
本发明中的内存服务器的实现方法如下:
环境:Linux服务器系统Java运行环境安装Redis
Redis版本号:redis 3.0.0
数据格式:以逗号拼接的String型数据链。例如:aa,bb,cc,dd,ee.........
数据从Redis读出后,每一条数据都是一个string数据链,调用split()方法,以逗号分隔开。并按照顺序与终端发过来的字段进行一一匹配,以解析字段名为key,以String数据链分隔开的数据为value,形成键值对,存入到Map集合中。当终端达到上限,即获取此终端的一半数据。经解析后生成map集合,并将所有的map集合都存入到list集合中,For循环list集合将数据批量插入到数据库中,然后删除redis中已插入数据库的数据链。并保持redis中的数据在最大上限的一半以上并小于最大上限的数据。
根据本发明实施例的基于Redis的内存服务器设计方法,通过Redis将数据插入WebKey中,并做到了实时展示,并且将内存数据以Map的形式缓存起来,做到了及时地插入以及迅速地查询,实现数据库的批量处理方式。本发明提出新型内存服务器的概念,用于对数据进行整理,减轻数据库等压力,通过提出的内存服务器概念实现云平台内存的合理分配。本发明具有处理大规模并发的条件,内存服务器减轻了云平台数据处理压力,提高了其性能,通过批量插入数据库的方法,减轻了对数据库的频繁操作。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。本发明的范围由所附权利要求及其等同限定。

Claims (7)

1.一种基于Redis的内存服务器设计方法,其特征在于,包括如下步骤:
步骤S1,为每个终端分配唯一的key,其中,以所述终端的终端号作为key;并为内存服务器分配唯一的WebKey,每个终端的WebKey包括由相关终端的key和数据信息拼接成的字符串链表结构;
步骤S2,启动monitor进程,接收外部终端发送的数据链,对上述数据链进行解析并根据终端的终端号归纳到内存服务器对应终端号的key中,将每一条解析后的数据存入一个map集合,获取这条数据的终端号,设置内存服务器的key,用于存储相匹配终端的数据;将每一个终端的所有数据存入到redis内存服务器中与该终端相匹配的key中;步骤S2中具体包括如下步骤:
启动Monitor进程;
接收外部终端发送来的数据链;
由于接收到的数据是以逗号分隔的数据链,根据采集服务器发送来的字段位置匹配,将字段与数据相匹配,即对数据进行解析;
然后,将每一条解析后的数据存入一个map集合,获取这条数据的标志符即终端号;
自定义前缀加终端号,以设置内存服务器的key,用于存储相匹配终端的数据;
将每一个终端的所有数据存入到redis中与该终端相匹配的key中;
步骤S3,判断内存服务器中数据是否满足删除条件,如果满足则对内存服务器中的数据进行删除管理;
内存服务器的删除条件,包括以下一种或多种:
(1)当终端key数据存储达到上限,并将最早存储的一半数据存入数据库,并将这一半已经存入数据库的数据从key中删除,防止数据重复插入;
其中,当key中数据达到上限时,需要将最先存入的一半数据插入数据库中;每当线程运行时,只要发现key中的数据大于上限时,就会将该key中的最早一半数据批量存入数据库中;并且将这一半已经存入数据库的数据从key中删除,防止数据重复插入;
(2)多终端同时存最新一条数据到设定的key中,当其中某终端的数据非最新数据时,需要删除该条数据并存入新的数据;
(3)当终端停止发送数据时,该终端将会有超过上限一半的数据未存储到数据库,此时需要将这些数据存入数据库,并在该终端再次发数据时删除这些数据,以防止出现数据重复插入数据库的问题。
2.如权利要求1所述的基于Redis的内存服务器设计方法,其特征在于,在所述步骤S2中,将每条解析后的数据存入map集合,以各自独有的终端号的key当作是map的key,以各自终端的消息体作为map对应的value;
利用HashMap将对象的hashCode返回的哈希值进行进一步处理,将不同的元素放到了不同的区块或桶中,在下次查找该对象的时候,计算其哈希值,依据哈希值确定区块或桶,然后在这个小范围内查找元素。
3.如权利要求1所述的基于Redis的内存服务器设计方法,其特征在于,当满足条件(1)时,删除内存服务器中数据,包括:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答;
由采集服务器发送应答信息;
Montior进行接收采集服务器的应答信息,获取在线终端号以及状态码;
获取每个在线终端所有redis内存服务器里的数据;
判断该在线终端所储存的redis里存储的数据是否大于预设值;
取出最早插入的一半数据,转存至数据库中;
然后删除redis内存服务器中这些插入数据库的数据。
4.如权利要求1所述的基于Redis的内存服务器设计方法,其特征在于,当满足条件(2)时,删除内存服务器中数据,包括:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答;
由采集服务器发送应答信息;
Montior进程接收采集服务器的应答信息,获取在线终端号以及状态码;
判断redis内存服务器中是否存在webkey,该webkey用于存储所有终端的最新一条数据;
解析该webkey中的所有数据,并获取每条数据对应的终端号;
判断这些终端的状态码是否为1;
如果是,则更新这个终端存在redis里的最新一条数据;
将这条最新的数据插入webkey中。
5.如权利要求1所述的基于Redis的内存服务器设计方法,其特征在于,当满足条件(3)时,删除内存服务器中数据,包括:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答;
由采集服务器发送应答信息;
Montior进程接收采集服务器的应答信息,获取在线终端号以及状态码;
获取状态码为1的即在线终端号;
查询终端状态表,判断以上终端号在数据表中的状态是否不为1;
如果是,则删除这些终端存储在内存服务器中所有数据。
6.如权利要求1所述的基于Redis的内存服务器设计方法,其特征在于,所述内存服务器和数据库同步调用,批量插入数据。
7.如权利要求1所述的基于Redis的内存服务器设计方法,其特征在于,所述Monitor进程还用于对每个终端赋予每个终端状态码,并将上述终端与对应的状态码state存入数据库中,包括如下步骤:
启动Monitor进程;
发送请求至采集服务器;
等待采集服务器应答;
由采集服务器发送应答信息;
Montior接收采集服务器的应答信息,获取在线终端号以及状态码;
A)判断是否满足state==0或者state==2,如果满足则执行1),否则执行2);
1)如果满足state==0或者state==2则将终端号存入map集合中;
然后判断终端号是否相同,如果终端号相同则将终端号对应的Redis里面的数据存入数据库中;如果终端号不相同则结束;
2)如果不满足state==0或者state==2则将终端号存入list中;
然后判断终端号是否相同;
如果终端号相同则删除该终端对应的Redis中的所有数据;如果终端号不相同则结束;
B)在判断是否满足state==0或者state==2的同时,根据数据库terminal表,判断是否state==1;如果是则将终端号存入list中,然后判断终端号是否相同,如果终端号相同则将终端号对应的Redis里面的数据存入数据库中;如果终端号不相同则结束。
CN201811057150.0A 2018-09-11 2018-09-11 基于Redis的内存服务器设计方法 Active CN109165101B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811057150.0A CN109165101B (zh) 2018-09-11 2018-09-11 基于Redis的内存服务器设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811057150.0A CN109165101B (zh) 2018-09-11 2018-09-11 基于Redis的内存服务器设计方法

Publications (2)

Publication Number Publication Date
CN109165101A CN109165101A (zh) 2019-01-08
CN109165101B true CN109165101B (zh) 2021-03-19

Family

ID=64894908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811057150.0A Active CN109165101B (zh) 2018-09-11 2018-09-11 基于Redis的内存服务器设计方法

Country Status (1)

Country Link
CN (1) CN109165101B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078817A (zh) * 2019-12-26 2020-04-28 中科星图股份有限公司 一种基于Redis和PostgreSQL的瓦片地图服务集群系统和方法
CN112784120B (zh) * 2021-01-25 2023-02-21 浪潮云信息技术股份公司 一种基于范围分片方式的kv内存数据库存储管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463612A (zh) * 2017-06-29 2017-12-12 北京北信源软件股份有限公司 高并发redis数据库操作方法及系统
CN107479829A (zh) * 2017-08-03 2017-12-15 杭州铭师堂教育科技发展有限公司 一种基于消息队列的Redis集群海量数据快速清理系统及方法
CN107766503A (zh) * 2017-10-20 2018-03-06 福建中金在线信息科技有限公司 基于redis的数据快速查询方法及装置
CN108062309A (zh) * 2016-11-07 2018-05-22 天脉聚源(北京)科技有限公司 一种大批量数据库读写的方法和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436710B2 (en) * 2010-09-28 2016-09-06 Redis Labs Ltd. Systems, methods, and media for managing an in-memory NoSQL database
CN103473267B (zh) * 2013-08-09 2016-11-16 深圳市中科新业信息科技发展有限公司 数据存储查询方法及系统
CN104965850B (zh) * 2015-04-29 2018-01-30 云南电网有限责任公司 一种基于开源技术的数据库高可用实现方法
US10747768B2 (en) * 2016-06-14 2020-08-18 Fuji Xerox Co., Ltd. Data processing system and data processing method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108062309A (zh) * 2016-11-07 2018-05-22 天脉聚源(北京)科技有限公司 一种大批量数据库读写的方法和系统
CN107463612A (zh) * 2017-06-29 2017-12-12 北京北信源软件股份有限公司 高并发redis数据库操作方法及系统
CN107479829A (zh) * 2017-08-03 2017-12-15 杭州铭师堂教育科技发展有限公司 一种基于消息队列的Redis集群海量数据快速清理系统及方法
CN107766503A (zh) * 2017-10-20 2018-03-06 福建中金在线信息科技有限公司 基于redis的数据快速查询方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《Supply of a key value database redis in-memory by data from a relational database》;Alae El Alami et al.;《 2018 19th IEEE Mediterranean Electrotechnical Conference (MELECON)》;20180611;全文 *

Also Published As

Publication number Publication date
CN109165101A (zh) 2019-01-08

Similar Documents

Publication Publication Date Title
CN111460023B (zh) 基于Elasticsearch的业务数据处理方法、装置、设备及存储介质
CN108427684B (zh) 数据查询方法、装置及计算设备
CN109933585B (zh) 数据查询方法和数据查询系统
CN111666326B (zh) Etl调度方法及装置
CN109165101B (zh) 基于Redis的内存服务器设计方法
CN111385365B (zh) 上报数据的处理方法、装置、计算机设备和存储介质
CN111177144B (zh) 表同步方法、装置、设备、存储介质及系统
CN112765152B (zh) 用于合并数据表的方法和装置
CN110309122B (zh) 获取增量数据的方法、装置、服务器和存储介质
CN110502317B (zh) 一种事务管理的方法和装置
CN112613271A (zh) 数据分页方法、装置、计算机设备及存储介质
CN115878027A (zh) 一种存储对象的处理方法、装置、终端及存储介质
CN111258819A (zh) MySQL数据库备份文件的数据获取方法、装置和系统
CN101673217A (zh) 一种实现远端程序调用的方法和系统
CN114490060A (zh) 内存分配方法、装置、计算机设备和计算机可读存储介质
CN113377789A (zh) 数据库变更数据的处理方法、装置、计算机设备和介质
CN111831688A (zh) 运维数据的管理方法和管理系统
CN111797095A (zh) 索引构建方法和json数据查询方法
CN110888863A (zh) 一种状态字段优化方法、装置、电子设备及存储介质
CN114063931B (zh) 一种基于大数据的数据存储方法
CN110704481A (zh) 展示数据的方法和装置
CN106570193B (zh) 一种时序大数据的加载方法
CN115658750A (zh) 业务数据处理方法、装置、电子设备及存储介质
CN113868687A (zh) 一种任务处理进度的管理方法和装置
CN113312412A (zh) 一种统计数据的获取方法、装置、电子设备及存储介质

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
GR01 Patent grant
GR01 Patent grant