PHP中的基本Memcached实现

PHP中的基本Memcached实现,php,memcached,implementation,cache-invalidation,Php,Memcached,Implementation,Cache Invalidation,我理解Memcache的概念,但我有一个疑问 让我们说: 我有一个包含三列的“用户”表: 用户ID 用户名 和密码 假设查询是$query=“select*from users”。查询第一次被执行并作为md5($query)->result存储在memcache中 因此,当下次执行此查询时,将执行$query的md5哈希。它匹配并从memcache中获取结果 但是如果我必须从上面的查询中选择两个参数,该怎么办呢 比如$query=从用户处选择用户名、密码 那我该怎么办?理想情况下,我希望从与se

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

让我们说:

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

假设查询是$query=“select*from users”。查询第一次被执行并作为md5($query)->result存储在memcache中

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

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

比如$query=从用户处选择用户名、密码

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


如何处理此类问题?

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

  • 从Memcache获取存储的结果
  • 这将返回您最初存储的内容,即整个用户表,其中包括用户名和密码
  • 然后使用这个结果,只使用您需要的数据子集

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


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

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