2

我了解 Memcache 的概念,但我有疑问。

让我们说:

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

假设查询是 $query="select * from users"。第一次,查询被执行并以 md5($query)->result 的形式存储在内存缓存中。

因此,当下次执行此查询时,将执行 $query 的 md5 哈希。它匹配并从内存缓存中获取结果。

但是,如果我必须从上述查询中选择 2 个参数怎么办。

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

那我该怎么办?理想情况下,我希望从与 select * from users 相同的键中获取它,因为“select username,password from users”所需的所有数据都存在于与“select * from users”键对应的结果中。

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

4

2 回答 2

2

也许您应该将“用户”结果存储在一个不会根据您选择的标准而改变的键下。您已经将整个用户表存储到键 md5("select * from users") 中。所以你可以:

  1. 从 Memcache 获取存储的结果
  2. 这将返回您最初存储的内容,即整个用户表,其中包括用户名和密码。
  3. 然后使用此结果并仅使用您需要的数据子集。
于 2013-10-18T20:21:48.750 回答
1

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

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

于 2013-10-19T00:34:18.640 回答