【发布时间】:2011-05-20 05:46:04
【问题描述】:
我有一个网站,人们可以在其中发布 cmets、图片和其他内容。我想添加一个用户可以喜欢/不喜欢这些项目的功能。
我使用数据库来存储所有内容。
我正在研究几种方法:
方法一:
- 向表中添加一个“like_count”列,并在有人喜欢某项时增加它
- 添加“user_likes”表以跟踪用户喜欢的所有内容。
优点:易于实现,所需的查询最少。 缺点:项目需要随着点赞数的每次变化而刷新。我有一个缓存项目的完整列表,这将打破。
方法二:
- 创建一个新表“like_summary”并将每个项目的总喜欢存储在该表中
- 添加“user_likes”表以跟踪用户喜欢的所有内容。
- 将like_summary数据缓存在memcache中,只有当值发生变化时才刷新
优点:主要项目表的负载较少,可以缓存而不用担心。 缺点:memcache 的点击次数过多(一个页面显示 20 个项目,需要从 memcache 加载),可能会很慢
有什么建议吗?
【问题讨论】:
-
如果没有关于预期负载、访问数量以及整体架构和设置的更多信息,这个问题没有多大意义。
-
“实现 facebook 喜欢”是什么意思?您是否希望您的网站复制此功能(没有任何真正的 facebook 链接),或者您是否希望跨网站进行某种 mashup-kludge-integration?非常不清楚没有更多信息...
-
抱歉不清楚.. 这里有更多细节: 1. 它只在内部(所以不能嵌入到外部网站上)。 2. 你可以把它想象成有点类似于堆栈溢出的投票赞成/反对票。 3. 我想确保它扩展到 500 个并发页面视图,每个页面包含 25 个项目,旁边显示一个“喜欢”计数。整体系统基于Python/Mysql/Memcache,
标签: python architecture