欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种基于用户状态对feed信息进行推送的方法及系统独创技术18957字

一种基于用户状态对feed信息进行推送的方法及系统

2021-03-15 03:50:44

一种基于用户状态对feed信息进行推送的方法及系统

  技术领域

  本发明涉及信息技术处理技术领域,更具体地,涉及一种基于用户状态对feed信息进行推送的方法及系统。

  背景技术

  随着当今计算机技术的飞速发展和网速的高速提升,信息的流动也伴随着网速的提高越来越快,重大的事件信息往往几分钟内就可以传递到全球的各个角落,又加上3G、4G通信的快速发展,智能手机和移动互联网得到了迅速的普及,人们不知不觉中已经离不开网络了。

  伴随着移动互联网的浪潮,社交网络也迅速发展,各种社交形式孕育而出,这其微信、微博、进入头条和快手等手机APP也成为人们喜爱的应用,而这些应用都是基于feed流技术发展过来的。

  Feed流,顾名思义是feed+流的形式,feed原意是“饲料”,feed流本意就是在一个地方源源不断的投放饲料。而实际信息学角度,feed流的feed是指一条单一的信息,可以是一条朋友圈、一条微博、一条今日头条的资讯或是一个快手的短视频,源源不断的feed信息就组成了feed流,用户可以不断的看到它关注的信息或是根据推荐系统推送的资讯。

  Feed流产品正因为能不断的推送给用户希望看到的信息,才能因此增加产品的用户数量并提高用户的粘度。但是伴随着用户的不断增多,feed信息如何快速高效的根据用户之间的关系进行分发推送是一个急需解决的问题,比如一个用户发出一条信息后,另一个关注的用户如何才能快速并且正确的把刚才的信息显示到的自己的Timeline主页,这对用户的产品体验有非常重要的影响,所以feed流信息的推送方式便成为了制约限制一个feed流系统的至关重要的因素。

  现有技术(申请:《一种社交网站Feed流推送方法》)的Feed流推送方式实际上只是现在Feed流推送技术的实现手段之一,尤其信息推送的效率与其实际使用场景有很大的关系,在一些场景下“推模式”的方式需要维护操作大量的Timeline表,在这些Timeline表中插入大量的相同数据,这样会增加服务器数据库的写压力,并且在数据库中会存在大量的数据冗余,浪费服务器资源,对整个网站甚至系统的正常运行造成很大的影响,严重情况下甚至会导致整个网站或是系统的奔溃。

  发明内容

  本发明技术方案提供一种基于用户状态对feed信息进行推送的方法及系统,以解决如何对根据不同的用户状态对feed信息进行推送的问题。

  为了解决上述问题,本发明提供了一种基于用户状态对feed信息进行推送的方法,方法包括:

  建立用户状态列表,所述用户状态列表用于记录处于在线状态的用户;

  当用户更新feed信息时,查询与所述用户有关联的关联用户;

  基于所述用户状态列表判断所述关联用户是否处于在线状态,当所述关联用户处于在线状态时,用户向在线状态的所述关联用户采用异步的推模式,将更新的feed信息添加到在线状态的所述关联用户的feed队列中;

  当所述关联用户处于离线状态时,用户向离线状态的所述关联用户采用拉模式同步更新的feed信息。

  优选地,当处于离线状态的所述关联用户变更为在线状态后,获取所述关联用户的最后一条feed信息,从所述关联用户的关注列表中遍历被关联的用户的最新的feed信息,将最新的feed信息更新至所述关联用户的feed队列中。

  优选地,处于离线状态的所述关联用户变更为在线状态后,获取所述关联用户的最后一条feed信息的最后时间,从所述关联用户的关注列表中遍历被关联用户从最后时间至当前时间的所有feed信息,将遍历出的所有feed信息更新至关联用户的feed队列中。

  优选地,还包括:将feed队列存储于数据库;

  对用户进行分类,对所述数据库进行分区;

  按照用户的所属分类将用户的feed队列存储于对应的数据库分区中。

  优选地,将用户的预设数量的feed队列的优先数据存入redis缓存,包括:

  设置feed队列的缓存时间,当feed队列的优先数据存入redis缓存到达缓存时间时,清除redis缓存中feed队列的优先数据。

  基于本发明的另一方面,本发明提供一种基于用户状态对feed信息进行推送的系统,系统包括:

  初始单元,用于建立用户状态列表,所述用户状态列表用于记录处于在线状态的用户;

  查询单元,用于当用户更新feed信息时,查询与用户有关联的关联用户;

  第一更新单元,用于基于用户状态列表判断所述关联用户是否处于在线状态,当所述关联用户处于在线状态时,用户向在线状态的所述关联用户采用异步的推模式,将更新的feed信息添加到在线状态的所述关联用户的feed队列中;

  第二更新单元,用于当所述关联用户处于离线状态时,用户向离线状态的所述关联用户采用拉模式同步更新的feed信息。

  优选地,第二更新单元还用于:当处于离线状态的所述关联用户变更为在线状态后,获取所述关联用户的最后一条feed信息,从所述关联用户的关注列表中遍历被关联的用户的最新的feed信息,将最新的feed信息更新至所述关联用户的feed队列中。

  优选地,第二更新单元还用于:处于离线状态的所述关联用户变更为在线状态后,获取所述关联用户的最后一条feed信息的最后时间,从关联用户的关注列表中遍历被关联用户从最后时间至当前时间的所有feed信息,将遍历出的所有feed信息更新至所述关联用户的feed队列中。

  优选地,还包括存储单元:用于将feed队列存储于数据库;

  对用户进行分类,对所述数据库进行分区;

  按照用户的所属分类将用户的feed队列存储于对应的数据库分区中。

  优选地,还包括存储单元:用于将用户的预设数量的feed队列的优先数据存入redis缓存,包括:

  设置feed队列的缓存时间,当feed队列的优先数据存入redis缓存到达缓存时间时,清除redis缓存中feed队列的优先数据。

  本发明技术方案提供一种基于用户状态对feed信息进行推送的方法及系统,其中方法包括:建立用户状态列表,用户状态列表用于记录处于在线状态的用户;当用户更新feed信息时,查询与用户有关联的关联用户;基于用户状态列表判断关联用户是否处于在线状态,当关联用户处于在线状态时,用户向在线状态的关联用户采用异步的推模式,将更新的feed信息添加到在线状态的关联用户的feed队列中;当关联用户处于离线状态时,用户向离线状态的关联用户采用拉模式同步更新的feed信息。本发明技术方案根据用户的在线或离线状态,提出采用推模式与拉模式相结合的feed信息推送方式,根据不同的用户状态采用不同的同步方式,实现了feed信息合理高效的同步。本发明技术方案对大量产生的Feed信息进行灵活的处理和分发,增加推送效率的同时,也能够缓解服务器在处理大量数据时的压力,从而保证网站的良好运行。

  附图说明

  通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

  图1为根据本发明优选实施方式的一种基于用户状态对feed信息进行推送的方法流程图;

  图2为根据本发明优选实施方式的一种基于用户状态对feed信息进行推送的方法流程图;以及

  图3为根据本发明优选实施方式的一种基于用户状态对feed信息进行推送的系统结构图。

  具体实施方式

  现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

  除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

  图1为根据本发明优选实施方式的一种基于用户状态对feed信息进行推送的方法流程图。本发明的实施方式不同于以往单纯的采用推模式或是拉模式的方式来同步feed信息数据,本发明提出采用推拉结合的方式,根据用户的在线或离线状态采用不同的同步方式,合理高效的对feed信息进行同步。

  如图1所示,本发明提供一种基于用户状态对feed信息进行推送的方法,方法包括:

  优选地,在步骤101:建立用户状态列表,用户状态列表用于记录处于在线状态的用户。本发明建立了记录用户状态列表,用于记录在线状态的用户。

  优选地,在步骤102:当用户更新feed信息时,查询与用户有关联的关联用户。

  本发明在更新每个用户feed队列时,要根据用户的状态进行区分,这里采用用户等登陆状态为标准,在线用户采用推模式,而离线用户采用拉模式更新feed队列。全局维护一个在线用户状态列表,用户每次登陆就将信息添加进这个列表,下线后就从在线用户列表中去除掉,对于突然掉线或是超过一定时间不操作的用户也看作为离线用户,将其信息从在线用户列表中去除掉。

  优选地,在步骤103:基于用户状态列表判断关联用户是否处于在线状态,当关联用户处于在线状态时,用户向在线状态的关联用户采用异步的推模式,将更新的feed信息添加到在线状态的关联用户的feed队列中。

  本发明当一个拥有很多粉丝数的用户在系统中发送一条信息后,就遍历寻找其关联的在线状态的粉丝,采用异步的推模式,将feed信息插入各个在线粉丝的feed队列中,这样保证了在线的用户可以实时的获取到最新更新的feed信息。

  优选地,在步骤104:当关联用户处于离线状态时,用户向离线状态的关联用户采用拉模式同步更新的feed信息。

  优选地,当处于离线状态的关联用户变更为在线状态后,获取关联用户的最后一条feed信息,从关联用户的关注列表中遍历被关联的用户的最新的feed信息,将最新的feed信息更新至关联用户的feed队列中。

  优选地,处于离线状态的关联用户变更为在线状态后,获取关联用户的最后一条feed信息的最后时间,从关联用户的关注列表中遍历被关联用户从最后时间至当前时间的所有feed信息,将遍历出的所有feed信息更新至关联用户的feed队列中。

  本发明对于该用户关联的离线粉丝,采用拉模式同步feed信息,当离线的关联用户登录系统后,获取到该关联用户的最后一条feed的信息,并从其自身的关注列表中遍历其关注用户所发的最新的feed,将其更新到自己的feeds中去,此过程为异步过程,这样当用户刷新自己的主页界面后,就可快速的获取其对应的feed列表信息。如图2所示。

  优选地,还包括:将feed队列存储于数据库;对用户进行分类,对数据库进行分区;按照用户的所属分类将用户的feed队列存储于对应的数据库分区中。

  优选地,将用户的预设数量的feed队列的优先数据存入redis缓存,包括:设置feed队列的缓存时间,当feed队列的优先数据存入redis缓存到达缓存时间时,清除redis缓存中feed队列的优先数据。

  本发明的每个用户的feed队列可以存放在数据库中,用户在请求时,对数据库库进行查询,当用户数量过多时,可以按照用户的‘id’进行分表甚至进行分库,但数据库的查询性能一定,可以将用户的feed列表的前300条数据存入redis中,由于redis是基于内存的高性能key-value缓存数据库,这样可以大大提升用户刷新主页是查询的速度,同时在存储redis时为每个用户的feed队列设置缓存时间,当缓存时间到达时,自动清除缓存,提高服务器的使用效率。

  本发明feed流的推送方式不在是单一的推模式,而是根据用户的状态不同,而采取不同的推送方式。

  本发明在用户状态是在线登录状态时,采用推模式,进行异步操作,找出对应的粉丝列表,将当前feed信息插入到各个粉丝的feed队列中去。

  本发明在用户状态是离线状态是,采用拉模式,feed队列信息不进行更新,只有在用户登录系统时,以feed队列中的最后一条的时间到当前时间的时间段为条件,将该用户关注列表内该时间段的所有feed信息检索出来并插入自己的feed列表中。

  本发明添加redis作为缓存,存取用户最近最有可能的浏览的feed信息,比如feed列表中的前300条数据,超过300条的信息在通过数据库来进行查询。

  本发明主要在于提高原有的采用单一推模式的feed信息推送方案。新的feed推送方案采用“在线推”和“离线拉”的模式,根据用户登录对其使用不同的推送方案,对于具有高时效性要求的在线用户,对其使用推模式,可以使其有效的获取到关注列表内的最新信息变化。而对于离线用户,其对于信息实时性要求并不高,可以延后处理feed列表,并且对于有些平台会存在当量你的僵尸用户,采用拉模式可以有效的避免对这些僵尸用户的feed列表的更新,大大节省了服务器的计算资源。

  图3为根据本发明优选实施方式的一种基于用户状态对feed信息进行推送的系统结构图。如图3所示,本发明提供一种基于用户状态对feed信息进行推送的系统,系统包括:

  初始单元301,用于建立用户状态列表,用户状态列表用于记录处于在线状态的用户。本发明建立了记录用户状态列表,用于记录在线状态的用户。

  查询单元302,用于当用户更新feed信息时,查询与用户有关联的关联用户。

  本发明在更新每个用户feed队列时,要根据用户的状态进行区分,这里采用用户等登陆状态为标准,在线用户采用推模式,而离线用户采用拉模式更新feed队列。全局维护一个在线用户状态列表,用户每次登陆就将信息添加进这个列表,下线后就从在线用户列表中去除掉,对于突然掉线或是超过一定时间不操作的用户也看作为离线用户,将其信息从在线用户列表中去除掉。

  第一更新单元303,用于基于用户状态列表判断关联用户是否处于在线状态,当关联用户处于在线状态时,用户向在线状态的关联用户采用异步的推模式,将更新的feed信息添加到在线状态的关联用户的feed队列中。

  本发明当一个拥有很多粉丝数的用户在系统中发送一条信息后,就遍历寻找其关联的在线状态的粉丝,采用异步的推模式,将feed信息插入各个在线粉丝的feed队列中,这样保证了在线的用户可以实时的获取到最新更新的feed信息。

  第二更新单元304,用于当关联用户处于离线状态时,用户向离线状态的关联用户采用拉模式同步更新的feed信息。

  优选地,第二更新单元304还用于:当处于离线状态的关联用户变更为在线状态后,获取关联用户的最后一条feed信息,从关联用户的关注列表中遍历被关联的用户的最新的feed信息,将最新的feed信息更新至关联用户的feed队列中。

  优选地,第二更新单元304还用于::处于离线状态的关联用户变更为在线状态后,获取关联用户的最后一条feed信息的最后时间,从关联用户的关注列表中遍历被关联用户从最后时间至当前时间的所有feed信息,将遍历出的所有feed信息更新至关联用户的feed队列中。

  优选地,系统还包括存储单元:用于将feed队列存储于数据库;对用户进行分类,对数据库进行分区;按照用户的所属分类将用户的feed队列存储于对应的数据库分区中。

  优选地,系统还包括存储单元:用于将用户的预设数量的feed队列的优先数据存入redis缓存,包括:设置feed队列的缓存时间,当feed队列的优先数据存入redis缓存到达缓存时间时,清除redis缓存中feed队列的优先数据。

  本发明的每个用户的feed队列可以存放在数据库中,用户在请求时,对数据库库进行查询,当用户数量过多时,可以按照用户的‘id’进行分表甚至进行分库,但数据库的查询性能一定,可以将用户的feed列表的前300条数据存入redis中,由于redis是基于内存的高性能key-value缓存数据库,这样可以大大提升用户刷新主页是查询的速度,同时在存储redis时为每个用户的feed队列设置缓存时间,当缓存时间到达时,自动清除缓存,提高服务器的使用效率。

  已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。

  通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个//该[装置、组件等]”都被开放地解释为装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

《一种基于用户状态对feed信息进行推送的方法及系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)