使用 redis 作为 mysql 数据库的缓存

2022-08-30 15:16:38

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

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

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


答案 1

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

  1. 缓存数据库查询,即 - 所选查询及其结果将保留在 redis 中,以便在给定时间内或直到清除缓存(更新 databse 后很有用)为止。在这种情况下,您可以使用内置的mysql查询缓存,它将比使用其他键值存储更简单,或者您可以使用自己的类覆盖默认数据库集成,利用缓存(例如 http://pythonhosted.org/johnny-cache/)。
  2. 自定义缓存,即创建要保存在缓存中的自己的结构,并使用从数据库获取的数据定期或手动重新填充它们。它更灵活,可能更强大,因为您可以使用内置的 redis 功能(如列表或排序集),这些功能使更新开销小得多。它需要更多的编码,但它通常提供更好的结果,因为它更具定制性。一个很好的例子是以redis id列表的形式保留顶级文章,然后从redis访问具有给定ID的序列化文章。您可以保持该文章未规范化 - 即。序列化对象可以包含用户 ID 和用户名,以便可以将其他查询的开销保持在最低限度。

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


答案 2

推荐