我正在使用PDO连接到我想要实现memcached的系统中的数据库.
我不知道哪些密钥用于缓存结果,因为我无法使用PDO获取最终查询的字符串(因为准备好的语句).
解决这个问题有什么好主意吗?
提前致谢.
如果你只是想直接根据查询字符串缓存查询结果,Mysql的查询缓存已经为你做了这个.不要重新发明轮子.一个潜在的区别是Mysql的查询缓存被激活无效,因此永远不会返回过时(过时,不正确)数据; 根据您处理失效的方式,您的策略可能会进一步减少数据库负载,但代价是定期提供过时的过时数据.
此外,当更新发生时,您无法真正有选择地使各种缓存键失效(当插入/更新运行时,您如何知道哪些查询字符串应该过期?); 因此,您只需设置一个较短的到期时间(可能以秒为单位),以最大限度地减少您提供过时数据的时间.这可能意味着缓存命中率较低.最后,您描述的缓存策略很容易实现,但效果不是很好.
请务必阅读memecached常见问题解答的"通用设计方法"部分.一个好的缓存策略会在更新发生时立即删除/替换缓存数据 - 这允许您缓存数小时/天/周的数据,同时不会向用户提供过期数据.