一种在有序榜单中添加上榜数据的方法及系统的制作方法

文档序号:10725048阅读:262来源:国知局
一种在有序榜单中添加上榜数据的方法及系统的制作方法
【专利摘要】本发明提供一种在有序榜单中添加上榜数据的方法及系统,其中,所述方法包括:获取需添加的上榜数据的身份标识mid,及其指定排名位置pos;获取当前有序榜单中排名位置在第pos?1位的数据的排序分值score1以及第pos位的数据的排序分值score2;计算score1以及score2的均值,得到所述需添加的上榜数据的排序分值score:score=(score1+score2)/2;将所述需添加的上榜数据的身份标识mid以及排序分值score插入到所述当前有序榜单中。该方法将当前有序榜单数据和需添加的上榜数据整合在单一redis的key中,当有请求时,直接从redis内获取最终排名数据返回,快速准确,不用取出数据后对排名进行二次处理,降低了计算量;分页时既可以按照页码page获取,又可以按照since_id获取,满足分页请求。
【专利说明】
一种在有序榜单中添加上榜数据的方法及系统
技术领域
[0001]本发明涉及信息排序技术领域,尤其涉及一种在有序榜单中添加上榜数据的方法及系统。
【背景技术】
[0002]微博(Weibo),即微型博客(MicroBlog)的简称,也即是博客的一种,是一种通过关注机制分享简短实时信息的广播式的社交网络平台。它是一个基于用户关系信息分享、传播以及获取的平台。用户可以通过WEB、WAP等各种客户端组建个人社区,以140字(包括标点符号)的文字更新信息,并实现即时分享。微博的关注机制分为可单向、可双向两种。微博作为一种分享和交流平台,其更注重时效性和随意性。
[0003]现有实时互动的网络活动或电视节目,经常会与用户通过微博进行实时互动,且会对热门微博进行排名。
[0004]例如,2016春晚的“段王爷”和“扒图君”区,二级页需要展示指定白名单用户发布的与春晚相关的微博。微博列表按发布时间或者热度值有序展示,我们对这种须按一定顺序展示的榜单列表简称为有序榜单产品。而为满足运营的一些推广或合作需求,某些特殊微博(既可以是榜单内的数据也可以是榜单外的数据)需要手动上榜,即对某些微博人工指定其在该有序榜单中的排名并展示。如图1所示,由运营指定在“扒图君”区微博列表的第3名对特定微博进行展示(为推广支付宝咻一咻业务)。
[0005]现有的解决方案如下:
[0006]1.将有序的榜单数据存储到数据库。
[0007]2.当有数据请求时,先从数据库读取一定数量的微博id后,再获取运营需要手动上榜的信息,根据上榜信息中微博的指定排名,将合适的上榜微博插入到读取出的榜单数据内进行返回。
[0008]该方案存在以下技术问题:
[0009]原有榜单数据和手动上榜数据是分离的,需要分别取出原有榜单数据和手动上榜数据,两者结合组成最终的排名数据返回。这种机制主要有2个缺点:
[0010]1.每一次请求都需要将原有榜单同手动上榜数据结合,这样增加了计算复杂度,并且随着手动上榜微博量增加复杂度随之增加,这在并发请求量巨大时不利于快速返回数据。
[0011]2.分页时不能仅根据sinCe_id(请求数据的起始游标)获取数据,因为如果仅仅根据Since_id获取,则取出的微博id的整体排名是未知的,便无法与指定了整体排名的上榜数据进行合并。

【发明内容】

[0012]本发明的目的是提供一种在有序榜单中添加上榜数据的方法及系统,根据当前有序榜单中相关位置排名的分值,计算出合适的score值,插入到该有序位置,以解决上述原有榜单数据和手动上榜数据分离的问题。
[0013]为达到上述目的,一方面,本发明实施例提供一种在有序榜单中添加上榜数据的方法,包括:
[0014]获取需添加的上榜数据的身份标识mid,及其指定排名位置pos;
[0015]获取当前有序榜单中排名位置在第pos-Ι位的数据的排序分值scorel以及第pos位的数据的排序分值score2 ;
[0016]计算scoreI以及score2的均值,得到所述需添加的上榜数据的排序分值score:score = (score l+score2)/2 ;
[0017]将所述需添加的上榜数据的身份标识mid以及排序分值score插入到所述当前有序榜单中。
[0018]优选的:
[0019]当pos = l 时:
[0020]令scorel = score2+2;或,
[0021]不再获取排名位置在第pos-Ι位的数据的排序分值scorel,通过以下公式计算所述需添加的上榜数据的排序分值score:score = score2+l。
[0022]优选的:
[0023]所述当前有序榜单为redis数据库的有序微博流sorted_feeds列表。
[0024]优选的:
[0025]当获取到数据请求时,根据所述数据请求,从所述sorted_feeds列表中读取排名数据并返回。
[0026]可选的,所述有序榜单中的排序分值为浮点型数据,包括时间戳或热度值。
[0027]另一方面,本发明实施例提供了一种在有序榜单中添加上榜数据的系统,包括:
[0028]手动上榜数据获取单元,用于获取需添加的上榜数据的身份标识mid,及其指定排名位置pos;
[0029]排序分值获取单元,用于获取当前有序榜单中排名位置在第pos-Ι位的数据的排序分值scorel以及第pos位的数据的排序分值score2 ;
[0030]排序分值计算单元,用于计算scorel以及score2的均值,得到所述需添加的上榜数据的排序分值 score: score = (score l+score2)/2 ;
[0031 ]上榜数据插入单元,用于将所述需添加的上榜数据的身份标识mid以及排序分值score插入到所述当前有序榜单中。
[0032]优选的,所述排序分值获取单元,还用于当pos = I时,令scorel = score2+2;
[0033]或,
[0034]所述排序分值计算单元,还用于当pos= l时,不再接收所述排序分值获取单元的scorel值,通过以下公式计算所述需添加的上榜数据的排序分值score: score = score2+l。
[0035]优选的:
[0036]所述当前有序榜单为redis数据库的有序微博流sorted_feeds列表。
[0037]优选的,该系统还包括:
[0038]榜单反馈单元,用于当获取到数据请求时,根据所述数据请求,从所述sorted_feeds列表中读取排名数据并返回。
[0039]可选的,所述有序榜单中的排序分值为浮点型数据,包括时间戳或热度值。
[0040]上述技术方案具有如下有益效果:
[0041]将当前有序榜单数据和需添加的上榜数据整合在单一redis的key中,当有请求时,直接从redis内获取最终排名数据返回,快速准确,不用取出数据后对排名进行二次处理,降低了计算量;分页时既可以按照页码page获取,又可以按照sincejd获取,满足分页请求。
【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043]图1是本发明【背景技术】中微博列表的示意图;
[0044]图2是本发明一种在有序榜单中添加上榜数据的方法的流程图;
[0045]图3是本发明一种在有序榜单中添加上榜数据的系统的结构图;
[0046]图4是本发明一种在有序微博榜单中添加特定微博的方法的流程图。
【具体实施方式】
[0047]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0048]实施例一
[0049]如图2所示,为本发明实施例一种在有序榜单中添加上榜数据的方法的流程图,包括以下步骤:
[0050]步骤201,获取需添加的上榜数据的身份标识mid,及其指定排名位置pos;
[0051 ]以微博为例,将当前有序榜单数据存储为redis的zset数据类型,value存储微博id,score存储微博排序分值。
[0052]其中,mid表示该需添加的微博id,pos表示该微博在榜单中被指定的排名位置(pos> = l);
[0053]本实施例优选的:
[0054]所述当前有序榜单为redis数据库的有序微博流sorted_feeds列表。
[0055]
[0056]步骤202,获取当前有序榜单中排名位置在第pos-Ι位的数据的排序分值scorel以及第pos位的数据的排序分值score2 ;
[0057]步骤203,计算scorel以及score2的均值,得到所述需添加的上榜数据的排序分值score: score = (score l+score2)/2 ;
[0058]步骤204,将所述需添加的上榜数据的身份标识mid以及排序分值score插入到所述当前有序榜单中。
[0059]步骤203中,当pos= I时:
[0060]令scorel = score2+2;
[0061 ]或,
[0062]不再获取排名位置在第pos-Ι位的数据的排序分值scorel,通过以下公式计算所述需添加的上榜数据的排序分值score:score = score2+l。
[0063]即取sorted_feeds排名第一的分值,加I后作为需要插入数据的score值,连同value=mid 插入 sorted_feeds。
[0064]当pos>l时,分别获取sorted_feeds中pos-1和pos位置的分值,求其均值作为需要插入数据的score值,连同value=mid插入sorted_feeds0
[0065]优选的:
[ΟΟ??]当获取到数据请求时,根据所述数据请求,从所述sorted_feeds列表中读取排名数据并返回。
[0067]可选的,所述有序榜单中的排序分值为浮点型数据,包括时间戳或热度值。
[0068]实施例二
[0069]如图3所示,为本发明实施例一种在有序榜单中添加上榜数据的系统的结构图,包括:
[0070]手动上榜数据获取单元301,用于获取需添加的上榜数据的身份标识mid,及其指定排名位置pos;
[0071]排序分值获取单元302,用于获取当前有序榜单中排名位置在第pos-Ι位的数据的排序分值scorel以及第pos位的数据的排序分值score2 ;
[0072]排序分值计算单元303,用于计算scorel以及score2的均值,得到所述需添加的上榜数据的排序分值 score: score = (scorel+score2)/2;
[0073]上榜数据插入单元304,用于将所述需添加的上榜数据的身份标识mid以及排序分值score插入到所述当前有序榜单中。
[0074]优选的,
[0075]所述排序分值获取单元302,还用于当pos = I时,令scorel = score2+2;
[0076]或,
[0077]所述排序分值计算单元303,还用于当pos= I时,不再接收所述排序分值获取单元的scorel值,通过以下公式计算所述需添加的上榜数据的排序分值score: score = score2+
1
[0078]优选的:
[0079]所述当前有序榜单为redis数据库的有序微博流sorted_feeds列表。
[0080]优选的,该系统还包括:
[0081]榜单反馈单元,用于当获取到数据请求时,根据所述数据请求,从所述sorted_feeds列表中读取排名数据并返回。
[0082]可选的,所述有序榜单中的排序分值为浮点型数据,包括时间戳或热度值。
[0083]实施例三
[0084]图4为本实施例一种在有序微博榜单中添加特定微博的方法的流程图,如图所示,包括以下步骤:
[0085]步骤401,获取需添加的特定微博的身份标识mid,及其指定排名位置pos;
[0086]将当前有序微博榜单存储为redis的zset数据类型,value存储微博id,score存储微博排序分值。mid表示微博id,pos表示该微博在榜单中被指定的排名位置,在本实施例中,pos = 10:
[0087]为方便说明,我们用有序微博流sortecLfeeds表示存储在redis内的有序微博榜单,sorted_feeds(m)表示列表中排名第m的数据,如sorted_feeds(10)表示列表中排名第10的数据。
[0088]步骤402,获取当前有序微博榜单中排名位置在第pos-Ι位的数据的排序分值scorel以及第pos位的数据的排序分值score2 ;
[0089]S卩,获取第9位和第10位的排序分值。可选的,所述有序榜单中的排序分值为浮点型数据,包括时间戳或热度值。
[0090]为方便说明,假设该微博榜单为:
[0091 ] (midlO,score = 10) (mid9,score = 9) (mid8,score = 8) (mid7,score = 7) (mid6,score = 6) (mid5,score = 5) (mid4,score = 4) (mid3,score = 3) (mid2,score = 2) (midi,score = l),则第9位和第10位的排序分值分别为2和I。
[0092]步骤403,计算scorel以及score2的均值,得到所述需添加的特定微博的排序分值score: score = (score l+score2)/2 ;
[0093]根据步骤402的假设,可以计算得到score = l.5。
[0094]步骤404,将该特定微博的mid根据排序分值score插入到当前有序微博榜单中。
[0095]该特定微博可表示为(mid,score = l.5),插入该特定微博后的榜单可表示为:
[0096](midlO,score = 10) (mid9,score = 9) (mid8,score = 8) (mid7,score = 7) (mid6,score = 6) (mid5,score = 5) (mid4,score = 4) (mid3,score = 3) (mid2,score = 2) (mid,score = 1.5) (midi,score = I)。
[0097]可见,该特定微博插入在第10位。
[0098]至此,榜单插入的工作已经完成,当获取到数据请求时,根据所述数据请求,从所述sorted_feeds列表中读取排名数据并返回。
[00"]在按score值倒序获取redis内zset类型的数据列表时,有如下两种方法:
[0?00] l、zRevRange(适用于按页码page获取数据)
[0101 ]公式为zRevRange(key名称,(page-1 )*page_ size,page氺page_size_l),其中page表示页码,page —size表示每页显示个数,例如每页3个,要取第2页数据时,公式为:zRevRange (key 名称,3,5)。
[0102]2、zRevRangeByScore (适用于按 since—id 获取数据)
[0103]公式为zRevRangeByScore(key 名称,since—id / -1nf7,limit (O,page—size)),比如每页显示3个,用户下拉时since—id为7,则公式为zRevRangeByScore(key名称,7 / -1nf, ,limit(0,3))
[0104]其中,since—id特指在请求一个有序列表数据时候的“起始位置”或“游标位置”。比如本实施例的有序微博榜单,在手机端需要分页(当屏幕下拉时请求新的一页数据)展示,每页3个微博。则请求第一页数据时,since—id为空,因此服务端从列表头部开始获取3个数据,得到了 (midlO,score = 10) (mid9,score = 9)(mid8,score = 8),记下最后一个微博的score值8作为请求下一页数据时的since_id;而在请求下一页数据(用户下拉屏幕)时,服务端就可以知道这次数据请求的since_id = 8,即请求score值<8的3个数据,得到(mid7,score = 7) (mid6,score = 6) (mid5,score = 5),同时更新since_id = 5,依次类推。因此一般地,在手机端屏幕下拉请求数据时,sincejd是起一个指示当前数据请求的“数据起始游标”的作用。
[0105]因此,鉴于redis提供的这两种获取数据的方式,该方案在分页请求数据(点击页码或手机下拉两种形式)时既可按页码page获取,又可按照Since_id获取。
[0106]不论如何获取,该特定微博都会出现在第4页第I位。
[0107]上述技术方案具有如下有益效果:
[0108]将当前有序榜单数据和需添加的上榜数据整合在单一redis的key中,当有请求时,直接从redis内获取最终排名数据返回,快速准确,不用取出数据后对排名进行二次处理,降低了计算量;分页时既可以按照页码page获取,又可以按照sincejd获取,满足分页请求。
[0109]本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(:^丨6代1^1^6313;[1;^7),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
[0110]本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
[0111]本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
[0112]在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、⑶-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、锡射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
[0113]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种在有序榜单中添加上榜数据的方法,其特征在于,包括: 获取需添加的上榜数据的身份标识mid,及其指定排名位置POS ; 获取当前有序榜单中排名位置在第pos-1位的数据的排序分值scorel以及第pos位的数据的排序分值score2 ; 计算score I以及score2的均值,得到所述需添加的上榜数据的排序分值score: score=(scorel+score2)/2; 将所述需添加的上榜数据的身份标识mid以及排序分值score插入到所述当前有序榜单中。2.根据权利要求1所述的方法,其特征在于,当pos= I时: 令scorel = score2+2;或, 不再获取排名位置在第pos-Ι位的数据的排序分值scorel,通过以下公式计算所述需添加的上榜数据的排序分值score:score = score2+l。3.根据权利要求1所述的方法,其特征在于: 所述当前有序榜单为redis数据库的有序微博流sorted_f eeds列表。4.根据权利要求3所述的方法,其特征在于: 当获取到数据请求时,根据所述数据请求,从所述sorted_feeds列表中读取排名数据并返回。5.根据权利要求1所述的方法,其特征在于,所述有序榜单中的排序分值为浮点型数据,包括时间戳或热度值。6.一种在有序榜单中添加上榜数据的系统,其特征在于,包括: 手动上榜数据获取单元,用于获取需添加的上榜数据的身份标识mid,及其指定排名位置 pos; 排序分值获取单元,用于获取当前有序榜单中排名位置在第pos-Ι位的数据的排序分值scorel以及第pos位的数据的排序分值score2 ; 排序分值计算单元,用于计算score I以及score2的均值,得到所述需添加的上榜数据的排序分值s core:score = (score l+score2)/2 ; 上榜数据插入单元,用于将所述需添加的上榜数据的身份标识mid以及排序分值score插入到所述当前有序榜单中。7.根据权利要求6所述的系统,其特征在于: 所述排序分值获取单元,还用于当Pos = I时,令score I = score2+2 ; 或, 所述排序分值计算单元,还用于当pos = I时,不再接收所述排序分值获取单元的scorel值,通过以下公式计算所述需添加的上榜数据的排序分值score: score = score2+l。8.根据权利要求6所述的系统,其特征在于: 所述当前有序榜单为redis数据库的有序微博流sorted_f eeds列表。9.根据权利要求8所述的系统,其特征在于,还包括: 榜单反馈单元,用于当获取到数据请求时,根据所述数据请求,从所述sorted_feeds列表中读取排名数据并返回。10.根据权利要求9所述的系统,其特征在于,所述有序榜单中的排序分值为浮点型数 据,包括时间戳或热度值。
【文档编号】G06F17/30GK106095923SQ201610407022
【公开日】2016年11月9日
【申请日】2016年6月12日
【发明人】韩志峰
【申请人】微梦创科网络科技(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1