PHP 中的基本内存缓存实现


Basic Memcached Implementation in PHP

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

比方说:

我有一个包含三列的表格"用户":用户标识用户名和密码。

假设查询是 $query="从用户中选择 *"。这是第一次,查询被执行并作为md5($query)->result存储在memcache中。

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

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

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

那我该怎么办?理想情况下,我想从与用户选择 * 相同的密钥中获取它,因为"从用户中选择用户名、密码"所需的所有数据都存在于与"从用户中选择 *"的密钥相对应的结果中。

我该如何管理此类问题?

也许您应该将"用户"结果存储在一个键下,该键不会根据您选择的条件而更改。您已经将整个用户表存储到密钥 md5("从用户中选择 *")中。因此,您可以:

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

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

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