一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

好友关系管理方法、装置、电子设备及存储介质与流程

2022-05-21 11:27:13 来源:中国专利 TAG:


1.本公开涉及互联网技术领域,更具体地,涉及一种好友关系管理方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.目前,在社交应用的设计中,通常是基于单数据表来存储管理好友关系,即,通过在关系数据库中维护一好友关系数据表的方式来存储管理用户之间的好友关系数据。
3.然而,社交应用在基于该种方式向用户提供好友关系管理服务时,所有与好友关系相关的增删改查操作均需要对该单数据表进行操作,这就使得在用户体量增大或者社交属性增强的情况下,该好友关系数据表也将变的异常庞大,进而可能存在影响系统整体性能以及稳定性的问题。


技术实现要素:

4.本公开实施例提供了一种好友关系管理方法、装置、电子设备及存储介质,可以提升应用向用户提供好友管理服务时的性能和稳定性。
5.本公开的第一方面,提供了一种好友关系管理方法,该方法包括:
6.获取好友关系数据,其中,所述好友关系数据包括多个键值对,所述键值对通过以主态用户的用户标识作为键,以客态用户的用户信息作为值,以表示主态用户与客态用户之间的好友关系;
7.基于所述好友关系数据,为用户提供好友关系管理服务。
8.本公开的第二方面,还提供了一种好友关系管理装置,包括:
9.获取模块,用于获取好友关系数据,其中,所述好友关系数据包括多个键值对,所述键值对通过以主态用户的用户标识作为键,以客态用户的用户信息作为值,以表示所述主态用户与所述客态用户之间的好友关系;
10.好友关系管理模块,用于基于所述好友关系数据,为用户提供好友关系管理服务。
11.本公开的第三方面,还提供了一种电子设备,包括:
12.存储器,用于存储可执行的指令;
13.处理器,用于根据所述可执行的指令的控制,运行所述电子设备执行根据本公开的第一方面所述的好友关系管理方法。
14.本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有可被计算机读取执行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行根据本公开的第一方面所述的好友关系管理方法。
15.本公开的有益效果在于,本公开的实施例提供的方法,通过获取以键值对管理用户之间的好友关系数据,并基于该好友关系数据,为用户提供好友关系管理服务,由于键值对是类似哈希的设计,这就使得在需要对好友关系数据进行增删查该操作时,其时间复杂度均是o(1),并且,好友列表的查询也能保证为o(n)的时间复杂度,从而可以大幅提升系统
的整体性能和稳定性。
16.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其他特征及其优点将会变得清楚。
附图说明
17.被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
18.图1是示意现有管理好友关系数据的数据表示意图。
19.图2是本公开实施例提供的好友关系管理方法的流程示意图。
20.图3是本公开实施例提供的互动管理服务的框架示意图。
21.图4是本公开实施例提供的好友关系管理装置的原理框图。
22.图5是本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
23.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
24.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
25.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
26.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其他例子可以具有不同的值。
27.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
28.《方法实施例》
29.通常,在描述用户关系时,一般将用户自身视为主态用户,并将该用户的好友视为客态用户。例如,在描述用户1和用户2之间的好友关系时,在用户1的角度上,用户1为主态,即主态用户,用户2为客态,即客用户;而在用户2的角度上,用户2为主态,用户1为客态。
30.目前,一般是以单一数据表的方式来存储管理用户之间的好友关系,具体请参看图1,针对用户标识分别为“123”和“456”的两个用户,可以基于数据表“用户表”存储该两个用户的用户信息,例如,用户标识、用户昵称等信息;而针对用户之间的好友关系,则如图1所示,可以构建包括“主态用户标识”、“客态用户标识”、“客态用户昵称首字母”等字段的“好友关系表”来管理用户之间的好友关系,基于该“好友关系表”,可以向用户提供“好友列表”功能以及“互动管理”功能,其中,用户好友列表中展示的好友昵称通常会根据用户好友的昵称首字母进行分组排序;而好友之间的互动一般有通信以及被邀请进群等方式,为保护用户隐私,社交应用一般会被设计成单向好友不允许通信,即,在主态用户与客态用户之间为好友,但是客态用户已经删除该主态用户的情况下,该主态用户不允许与客态用户进行互动。
31.由此可知,现有基于单一数据表方式管理用户好友关系数据的方式,一方面是在数据量较大的情况下,存在影响系统性能和稳定性的问题;另一方面,每当用户之间进行互动时,均需要向该数据表进行查询,以判断用户之间是否依然互为好友,这同样会对性能造成较大影响;再一方面,每次用户修改昵称时,若涉及到首字母变更,则为了准确的向用户提供“好友列表”功能,均需要对数据表中客态用户标识位该用户的所有记录的昵称首字母字段进行批量变更,这同样会对性能造成较大影响。
32.为解决上述问题,本公开的实施例提供了一种好友关系管理方法,请参看图2,其是本公开实施例提供的好友关系管理方法的流程示意图,该方法可以应用于电子设备中,具体可以应用于运行有社交应用的服务端的服务器中。
33.如图1所示,本实施例的方法可以包括如下步骤s2100-s2200,以下予以详细说明。
34.步骤s2100,获取好友关系数据,其中,所述好友关系数据包括多个键值对,所述键值对通过以主态用户的用户标识作为键,以客态用户的用户信息作为值,以表示主态用户与客态用户之间的好友关系。
35.具体地,针对现有基于单一数据表存储管理好友关系数据的方法所存在的问题,本公开的实施例提供的方法通过以多个键值对,即,key-value对来存储管理好友关系数据。由于键值对是类似哈希的设计,并且,该多个键值对可以以主态用户的用户标识进行哈希分配存储,这就使得针对好友关系数据的增删查改操作均可以根据用户标识进行哈希划分,且还可以实现类似分库分表的操作,以整体提升系统的性能和稳定性。
36.步骤s2200,基于所述好友关系数据,为用户提供好友关系管理服务。
37.针对现有基于单一数据表管理好友关系数据,在实现“互动管理”功能以及“好友列表”功能时所存在的、可能影响系统性能及稳定性的问题,本公开实施例提供的好友关系管理服务可以通过互动管理服务和昵称首字母更新服务以解决上述问题,其中,互动管理服务用于向用户提供互动管理功能,昵称首字母更新服务用于惰性的实现更新客态用户昵称首字母信息的功能,以下分别对如何基于该好友关系数据,为用户提供该两类服务进行详细说明。
38.在一个实施例中,在好友关系数据的键值对中,客态用户的用户信息可以包括主态用户与客态用户之间的最晚互动时间,即,好友关系数据中的键值对可以为《主态用户标识,(客态用户标识,最晚互动时间)》的形式,例如,键值对《“用户1”,(“用户2”,“xxxx年xx月xx日y时y分y秒”)》表示用户2为用户1的好友,且用户1与用户2的最晚互动时间为“xxxx年xx月xx日y时y分y秒”。
39.在该实施例中,所述基于好友关系数据,为用户提供好友关系管理服务,包括:在接收到第一用户针对第二用户的互动请求的情况下,获取第一用户的第一用户标识;根据第一用户标识,从好友关系数据中,获得第一用户与第二用户之间的第一最晚互动时间;根据第一最晚互动时间,为第一用户和第二用户提供互动管理服务。
40.请参看图3,其是本公开实施例提供的互动管理服务的框架示意图。如图3所示,该互动管理服务可以包括好友关系管理子服务以及互动统计子服务,其中,该好友关系管理子服务用于接收并响应针对好友关系数据的增删查改请求,该互动统计子服务可以用于在好友之间进行互动的过程中,统计其在预设时间窗口内的最晚互动时间,并基于该互好友关系管理子服务将该最晚互动时间更新至该两个好友对应的好友关系数据中。
41.需要说明的是,在该实施例中,如无特殊说明,以第一用户的角度进行说明,即,以第一用户为主态用户,第二用户为客态用户说明该方式。
42.具体地,在第一用户基于客户端向服务器发送针对第二用户的互动请求的情况下,为减少查询操作,以提升系统性能,可以以第一用户的第一用户标识为索引,基于好友关系管理子服务以o(1)复杂度直接获取第一用户与第二用户在历史时刻中的最晚互动时间,即第一最晚互动时间;并基于该第一最晚互动时间,为该两者提供互动管理服务。
43.在一个实施例中,所述根据第一最晚互动时间,为第一用户和第二用户提供互动管理服务,包括:获取第一最晚互动时间与当前时间之间的差值的绝对值;通过比较该差值的绝对值和预设阈值之间的大小关系,获得互动建议信息;在该互动建议信息表示建议第一用户和第二用户之间继续进行互动的情况下,向第一用户和第二用户提供互动服务;在第一用户和第二用户进行互动的过程中,统计第一用户和第二用户在预设时间窗口内的第二最晚互动时间;根据该第二最晚互动时间,更新好友关系数据中与第一用户和第二用户对应的数据。
44.在该实施例中,互动建议信息为表示是否建议第一用户和第二用户之间继续进行互动的信息。
45.该预设阈值,可以根据需要进行设置,例如,可以设置为10分钟,此处不做特殊限定。
46.如图3所示,在获取到第一用户和第二用户的第一最晚互动时间,即历史最晚互动时间之后,通过获取其与当前时间的差值的绝对值,并将该差值的绝对值与预设阈值进行比较,以确定用户之间是否在较近时间内进行过互动,若是,则说明两者通常互为好友,因此,可以请求及时通信系统,即im系统对第一用户发起的互动请求放行,并向两者提供互动服务;同时,在两者进行互动服务的过程中,该两个用户在互动的过程中,均可以向互动统计子服务发送互动统计请求,该请求里可以包含互动双方的用户标识和互动时间,该互动统计子服务可以统计互动双方在每一预设时间窗口内,例如,5分钟内的最晚互动时间,并将该最晚互动时间基于好友关系管理子服务更新至好友关系数据中。
47.另外,该方法还包括:在该互动建议信息表示不建议第一用户和第二用户之间继续进行互动的情况下,获取第二用户的第二用户标识;根据第二用户标识和该好友关系数据,确定第二用户的好友列表中是否包括第一用户;在第二用户的好友列表中不包括第一用户的情况下,向第一用户发出预设提示信息;以及,在第二用户的好友列表中包括第一用户的情况下,向第一用户和第二用户提供互动服务。
48.其中,所述根据第二用户标识和好友关系数据,确定第二用户的好友列表中是否包括第一用户,包括:以第二用户标识为索引,从好友关系数据中,获取第二用户对应的全部客态用户的用户标识,以构建用户标识集合;通过查询该用户标识集合中是否包括该第一用户标识,以确定第二用户的好友列表中是否包括该第一用户。
49.请继续参看图3,具体地,在获取到的互动建议信息表示不建议第一用户和第二用户之间继续进行互动的情况下,则说明两者可能在较长时间内未进行过互动,此时,为确保两者还互为好友,而不是单向好友关系,需要基于好友管理子服务从好友关系数据中查询检查两者是否依然互为好友,若是,则向两者正常提供互动服务,并在两者进行互动的过程中,基于互动统计子服务正常统计两者的最晚更新时间并更新两者的好友关系数据;而若
两者不再互为好友,即,第二用户的好友列表中不再包括第一用户,则此时可以直接向第一用户发出提示消息,以提示两者不再为好友,不支持继续进行互动。
50.由于在较大多数场景下,用户之间在进行互动时均是亲密好友之间进行互动,而陌生好友之间的互动概率通常较小,因此,通过在好友关系数据中存储好友之间进行通信的最晚互动时间,并在用户请求进行互动时,通过获取存储的该最晚互动时间与当前时间之间的差值的绝对值,并通过比较该差值的绝对值与预设阈值之间的大小关系,即可覆盖大部分互动场景,使得频繁的用户互动不会带来频繁的数据检查,以大幅提升系统的性能和稳定性。
51.以上针对如何基于好友关系数据,为用户提供互动管理服务进行了详细说明,以下针对如何为用户提供昵称首字母更新服务进行说明。
52.在一个实施例中,在好友关系数据的键值对中,客态用户的用户信息还可以包括客态用户的昵称首字母信息,即,好友关系数据中的键值对可以为《主态用户标识,(客态用户标识,最晚互动时间,昵称首字母信息)》的形式,例如,键值对《“用户1”,(“用户2”,“xxxx年xx月xx日y时y分y秒”,“d”)》表示用户2为用户1的好友,用户1与用户2的最晚互动时间为“xxxx年xx月xx日y时y分y秒”,并且用户2的昵称首字母为“d”。
53.在该实施例中,所述基于好友关系数据,为用户提供好友关系管理服务,包括:在接收到第二用户发送的昵称首字母更新请求的情况下,获取第二用户的第二用户标识、所述第二用户更新后的目标昵称首字母和昵称首字母修改时间;根据第二用户标识,将第二用户的昵称首字母更新为目标昵称首字母;以及,根据该第二用户标识和该昵称首字母修改时间,生成第一任务消息;将第一任务消息写入至目标任务队列,其中,该目标任务队列用于存储表示用户的昵称首字母发生更新的任务消息;基于该目标任务队列和该好友关系数据,为用户提供昵称首字母更新服务。
54.在本实施例中,目标任务队列,可以是在用户的昵称首字母发生更新的情况下,用于缓存该昵称首字母更新事件的任务消息的队列,该队列例如可以为基于rocketmq的消息队列,其中,rocketmq是一种分布式消息发布订阅系统,当然,该目标任务队列也可以通过其他方式实现,例如,也可以为基于rabbitmq的队列,此处不做特殊限定。
55.具体地,在本公开的实时例中,每当用户修改昵称时,可以以该用户的用户标识为关键字,更新该用户的昵称信息,同时,在用户修改后的昵称导致其昵称首字母发生更新的情况下,为避免针对好友关系数据中的全量数据进行更新时可能带来的性能问题,该实施例通过将用户昵称首字母发生变更的事件以生成任务消息的方式写入目标任务队列,并在该用户的好友在发起目标请求,例如,登录请求或者好友列表展示请求的情况下,触发从该目标任务队列中消费任务消息,以实现惰性更新该用户的昵称首字母信息的效果。
56.在一个实施例中,所述基于目标任务队列和好友关系数据,为用户提供昵称首字母更新服务,包括:在接收到第一用户发送的目标请求的情况下,获取第一用户对应的目标检查点,其中,目标检查点表示第一用户在历史时刻中最晚消费的任务消息在目标任务队列中的位置,目标请求包括登陆请求、好友列表展示请求中的任意一项;根据目标检查点,从目标任务队列中,获取与第一用户对应的多个第二任务消息,其中,第二任务消息为以目标检查点所表示的位置作为起始位置,从目标任务队列中获取到的消息;遍历多个第二任务消息中的用户标识,并在基于所述好友关系数据,确定任一用户标识所表示的用户与第
一用户之间存在好友关系的情况下,停止该遍历操作,以及,获取与第一用户之间存在好友关系的所有用户的最新昵称首字母;以第一用户的第一用户标识为索引,根据获取到的最新昵称首字母,更新所述好友关系数据中与第一用户对应的数据。
57.具体地,在第一用户通过客户端发起目标请求,例如,在登录或者请求展示好友列表的情况下,通过基于其对应的目标检查点,即,checkpoint,从目标任务队列中消费任务消息,在消费到任务消息之后,通过遍历每一任务消息中的用户标识,并在确认任意用户标识所标识的用户为其好友的情况下,则说明其好友的昵称首字母存在更新,此时,可以停止遍历,并直接基于用户正排服务,即,以用户标识为关键字,查询用户相关信息的服务,查询第一用户的所有好友的最新昵称首字母,以更新好友关系数据中与第一用户对应的数据;在以上处理之后,该方法还包括,根据该多个第二任务消息中的最晚修改时间更新至所述第一用户对应的目标检查点。
58.根据以上说明可知,在本公开的实施例中,在用户昵称首字母发送更新的情况下,在同步以该用户为客态用户的好友关系数据中的相关信息时,并不是全量同步,而是针对单主态用户的同步,这可以大幅减少数据读写操作,有效提升系统性能;同时针对昵称数据的修改,并不需要实时进行,而是惰性的按需进行修改,这同样可以提升系统性能;由于客态用户修改昵称首字母,并非一个极度敏感的业务场景,客态用户是否修改昵称对于主态用户而言是非透明的,触发同步的一刻即使目标任务队列中的数据超时被清空,也可以等待主态用户下一次发起目标请求且队列非空的时候才触发同步,这样能大大减少同步的频率,有效提升系统性能。
59.综上所述,本公开实施例提供的方法,通过获取以键值对管理用户之间的好友关系数据,并基于该好友关系数据,为用户提供好友关系管理服务,由于键值对是类似哈希的设计,这就使得在需要对好友关系数据进行增删查该操作时,其时间复杂度均是o(1),并且,好友列表的查询也能保证为o(n)的时间复杂度,从而可以大幅提升系统的整体性能和稳定性。
60.《装置实施例》
61.与上述实施例相对应,在本实施例中,还提供一种好友关系管理装置,如图4所示,该装置400可以包括获取模块410和好友关系管理模块420。
62.该获取模块410,用于获取好友关系数据,其中,所述好友关系数据包括多个键值对,所述键值对通过以主态用户的用户标识作为键,以客态用户的用户信息作为值,以表示所述主态用户与所述客态用户之间的好友关系;该好友关系管理模块420,用于基于所述好友关系数据,为用户提供好友关系管理服务。
63.《设备实施例》
64.在本实施例中,还提供一种电子设备,如图5所示,该电子设备500还可以包括处理器520和存储器510,该存储器510用于存储可执行的指令;该处理器520用于根据指令的控制运行电子设备以执行根据本公开任意实施例的好友关系管理方法。
65.《介质实施例》
66.与上述方法实施例对应,在本实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行如本公开以上任意实施例所述的好友关系管理方法。
67.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
68.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献