PHP中的基本Memcached实现

时间:2013-10-18 14:52:25

标签: php memcached implementation cache-invalidation

我理解Memcache上的概念,但我有一个疑问。

让我们说:

我有一个包含三列的'用户'表: 用户身份 用户名 和密码。

让我们说查询是$ query =“select * from users”。第一次,查询被执行并作为md5($ query) - >结果存储在memcache中。

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

但是,如果我必须从上面的查询中选择2个参数,那该怎么办呢。

喜欢$ query =选择用户名,来自用户的密码。

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

我如何管理这样的问题?

2 个答案:

答案 0 :(得分:2)

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

  1. 从Memcache
  2. 获取存储结果
  3. 这将返回您最初存储的内容,即包含用户名和密码的整个用户表。
  4. 然后使用此结果,仅使用您需要的数据子集。

答案 1 :(得分:1)

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

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