2013-10-18 34 views
2

我理解Memcache上的概念,但我有疑问。PHP中的基本Memcached实现

比方说:

我有一个表“用户”与三列: 用户ID 用户名 和密码。

可以说查询是$ query =“select * from users”。这是第一次,查询得到执行并作为md5($ query) - >结果存储在内存缓存中。

因此,当下次执行此查询时,将执行$ query的md5散列。它匹配并从memcache中获取结果。

但是如果我不得不从上面的查询中选择2个参数。

像$ query =选择用户名,密码从用户。

那我该怎么做?理想情况下,我希望从与用户选择*相同的密钥中获取它,因为'select * from users'的键对应于'select username,password from users'所需的所有数据。

我该如何处理这样的问题?

回答

1

Memcache/PHP不知道你的数据库的内部结构。如果您需要,您必须手动进行这种优化。

否则,如果需要这种智能缓存,mysql的查询缓存可能更适合。

2

也许您应该将“用户”结果存储在未根据您选择的标准更改的密钥下。您已将整个用户表存储在密钥md5中(“select * from users”)。所以你可以:

  1. 从内存缓存
  2. 获取存储的结果。这将返回您最初存储的东西,即整个用户表,其中包括用户名和密码。
  3. 然后使用此结果并仅使用您需要的数据的子集。
+0

正是我的想法,这一定是这个问题的答案。 –