四、何时使用memcached?

在使用 memcached 改进应用程序性能时,可以对一些关键的过程和步骤进行修改。

在加载信息时,典型的场景如图 2 所示。

图2.加载要显示的信息的典型顺序
此图显示了从加载数据到处理/格式化数据再到发送数据至客户机的流程 

 一般而言,这些步骤是:

在使用 memcached 时,为配合这个缓存,可对应用程序的逻辑进行稍许修改:

  • 尽量从缓存加载信息
  • 如果存在,使用信息的被缓存版本
  • 如果它不存在:

图 3 是对这些步骤的总结。

图3.在使用memcached时加载适合于显示的信息

此图显示了如果所请求的数据位于缓存内,它就会跳过所有处理步骤,节省了时间 

 

数据加载成为了至多三个步骤的一个过程,从缓存加载数据或从数据库视情况而定)加载数据并存储在缓存内。

当这个过程首次发生时,数据将正常地从数据库或其他数据源加载,然后再存储到 memcached 内。当下一次访问此信息时,它就会从 memcached 拉出,而不是从数据库加载,节省了时间和 CPU 循环。

问题的另一个方面是要确保如果更改了要存储在 memcached 内的信息,在更新后端信息的同时还要更新 memcached 的版本。这会让图 4 内所示的这个典型顺序发生稍许变化,如 图 5 所示。

图4.在一个典型的应用程序内更新或存储数据
此图显示了从更新数据到处理/格式化数据再到发送更新了的数据至客户机的流程 

 图 5 显示了使用 memcached 后发生了变化的流程。

图5.在使用memcached时更新或存储数据

此图显示了拓展了的流程:从更新数据到处理/格式化数据,再到将数据存储在 memcached 内,最后到发送更新了的数据至客户机 

 

比如,仍以博客站点为例,在博客系统更新数据库内的类别列表时,更新应该遵循如下顺序:

memcached 内的存储操作是原子的,所以信息的更新不会让客户机只获得部分数据;它们获得的或者是老版本,或者是新版本。

对于大多数应用程序,这两个操作是您惟一需要注意的。在访问他人使用的数据时,它会自动被添加到这个缓存内,而且如果对该数据进行了更改,此缓存内也会自动进行更新。


相关内容