29

我需要使用 php 创建一个解决方案,其中包含一个包含大量数据的 mysql 数据库。我的程序会有很多申请,我认为如果我使用缓存和 OO 数据库,我会有一个很好的结果,但我没有经验。

我认为例如如果我将保存在mysql中的信息缓存在redis数据库中,性能会有所提高,但我不知道这是否是一个好主意,所以我希望有人帮我选择。

对不起,如果我的英语不是很好,我来自巴西。

4

1 回答 1

50

是的,redis 对此有好处。但要了解要点,基本上有两种缓存方法。根据您是否使用框架(以及哪个),您可能有第一个选项可用标准或使用插件:

  1. 缓存数据库查询,即 - 选定的查询及其结果将保存在 redis 中,以便在给定的时间内更快地访问或直到清除缓存(更新数据库后有用)。在这种情况下,您可以使用内置的 mysql 查询缓存,这比使用额外的键值存储更简单,或者您可以使用缓存覆盖默认的数据库集成(例如http://pythonhosted.org /约翰尼缓存/)。
  2. 自定义缓存,即创建您自己的结构以保存在缓存中,并定期或手动使用从数据库中获取的数据重新填充它们。它更灵活并且可能更强大,因为您可以使用内置的 redis 功能,例如列表或排序集,这使得更新开销要小得多。它需要更多的编码,但它通常会提供更好的结果,因为它更加定制化。很好的例子是以 redis id 列表的形式保存热门文章,然后从 redis 访问具有给定 id 的序列化文章。您可以保持该文章未标准化 - 即。序列化对象可以包含用户 ID 和用户名,这样您就可以将额外查询的开销降至最低。

您可以决定采用哪种方法,我个人几乎总是选择第二种方法。但是,当然,一切都取决于你有多少时间,以及应用程序应该做什么——你不妨从 mysql 查询缓存开始,如果结果不够好,则转向 redis 和自定义缓存。

于 2013-04-29T12:10:21.047 回答