我应该将Redis或Neo4J用于以下用例吗?

时间:2016-11-25 23:41:11

标签: python django postgresql neo4j redis

我正在建立一个社交网络,每个用户都有3个不同的个人资料 - 个人资料1,个人资料2和个人资料3。

这是我的用例:

用户A跟随配置文件1中的用户B,C和D.用户A跟随配置文件2中的用户C,F和G.用户C跟随配置文件3中的用户A和E.

另一个问题是,每个这些配置文件上的任何用户都需要查看他们在各自配置文件中关注的用户的最新或(例如前N个)帖子(无论是配置文件1,2或3)。 / p>

我们如何才能最好地存储上述信息?

上下文: 我使用Django框架和Postgres DB来存储用户的个人资料信息。用户的帖子存储在云CDN上并从中检索。

实施这些用例的最佳方式是哪种方式,即选择最适合这种情况的技术?可伸缩性是另一个在这里发挥作用的重要因素。

1 个答案:

答案 0 :(得分:0)

Neo4J是一个图形数据库,适用于多跳关系搜索。说,你想获得A的兄弟的朋友的姐姐的前N个帖子... AFAIK,它是一个独立的实例,你不能在几个节点上划分你的数据。否则,两个人之间的关系可能会跨越机器。

Redis是一个键值存储,适合按键搜索。假设您想要获取A的好友列表,或者获得A的前N个列表。您可以使用Redis群集在多台计算机上分发数据。

哪个更好?这取决于您的情况。您似乎不需要多跳关系搜索。所以Redis可能会更好。

您可以SET保存每个人的好友列表。并有一个LIST来保存每个人的帖子ID。当您需要为用户A显示帖子时,请致电SMEMBERSSSCAN以获取好友列表,然后为每位好友致电LRANGE以获取前N个帖子ID。