我理解Memcache的概念,但我有一个疑问。
比方说:
我有一个包含三列的表格"用户":用户标识用户名和密码。
假设查询是 $query="从用户中选择 *"。这是第一次,查询被执行并作为md5($query)->result存储在memcache中。
因此,下次执行此查询时,将执行$query的 md5 哈希。它匹配并从内存缓存中获取结果。
但是,如果我必须从上面的查询中选择 2 个参数怎么办。
像$query=从用户中选择用户名,密码。
那我该怎么办?理想情况下,我想从与用户选择 * 相同的密钥中获取它,因为"从用户中选择用户名、密码"所需的所有数据都存在于与"从用户中选择 *"的密钥相对应的结果中。
我该如何管理此类问题?
也许您应该将"用户"结果存储在一个键下,该键不会根据您选择的条件而更改。您已经将整个用户表存储到密钥 md5("从用户中选择 *")中。因此,您可以:
- 从内存缓存中获取存储的结果
- 这将返回您最初存储的内容,即整个用户表,其中包括用户名和密码。
- 然后使用此结果并仅使用所需的数据子集。
Memcache/PHP 不知道你的数据库内部结构。如果需要,您必须手动进行这种优化。
否则,如果需要这种智能缓存,mysql 的查询缓存可能更适合。