实现类似facebook'喜欢'的功能的好策略是什么?

时间:2011-05-20 05:46:04

标签: python architecture

我有一个人们发布评论,图片和其他内容的网站。我想添加一个用户可以喜欢的功能/不同于这些项目。

我使用数据库存储所有内容。

我正在研究一些方法:

方法1:

  1. 在表格中添加'like_count'列,并在有人喜欢某个项目时将其增加
  2. 添加'user_likes'表格以保留用户喜欢的所有内容。
  3. 优点:易于实施,需要最少的查询。 缺点:每次更改时都需要刷新项目。我有一个缓存的项目列表,它将会中断。

    方法2:

    1. 创建一个新表'like_summary'并存储该表中每个项目的总喜欢
    2. 添加'user_likes'表格以保留用户喜欢的所有内容。
    3. 在memcache中缓存like_summary数据,只有在值更改时才刷新
    4. 优点:主项目表上的负载较少,可以缓存而不用担心。 缺点:memcache上的点击次数过多(页面显示需要从memcache加载的20个项目),可能会很慢

      有什么建议吗?

3 个答案:

答案 0 :(得分:3)

只是一个疯狂的想法:为什么不使用Facebook的like按钮?然后,您不仅可以免费获得该功能,而且还可以通过Facebook墙上的帖子大量增加您网站的流量:“此人喜欢这个网站”。

答案 1 :(得分:1)

在用户和项目之间执行多对多映射的一个关系表应该可以解决问题。

答案 2 :(得分:1)

您实际上只需要user_likes表。 like_count是从该表计算的。如果你需要获得性能,你只需要存储它,但是因为你正在使用memcached,所以最好不要将聚合值存储在数据库中,而是将它存储在memcached中。