我何时应该使用Memcached vs向数据库添加列?

时间:2012-11-04 01:05:37

标签: database caching database-design memcached relational-database

我想跟踪我的应用程序的每个用户访问某个页面的最后日期。一种方法是在我的数据库中向users表添加一个列,并在每次用户访问该页面时更新它。另一种方法是将这些数据存储在每个用户的Memcached中。

我意识到我赞成Memcached解决方案,但出于似乎合法的原因:

  • users表已有很多列,我不想不必要地添加它。
  • 使用Memcached比通过创建迁移等将数据库添加到数据库更容易。

那么这里适当的选择?为什么?

1 个答案:

答案 0 :(得分:1)

Memcached可用于存储具有限制生命周期的任意数据,但不应用作数据库替换。

适当的选择是为此特定业务逻辑创建一个隔离的数据库表。由于此功能将引入许多写入,因此不要锁定可能具有其他核心功能的任何其他表(如用户表)。当然,所述功能将影响数据库I / O;其中,Memcached非常适合存储要由批处理处理的数据队列。

Memcached队列的基本概要

Memcached's protocol之后,您的应用程序可以轻松维护受影响用户的队列列表,并设置/替换与特定用户相关的元数据。

/* Application handling Memcached Queue */

[ User is in Queue ? ]________ no 
 |                             |
 | yes                        [ Append user to queue list ]
 |                             |
[ Replace user data ]         [ Set user date ]

每天或每小时的流程应该能够消化队列列表,并将用户的元数据写入数据库。