一尘不染

使用Redis作为MySQL数据库的缓存

redis

我需要使用php创建一个具有大量数据的mysql数据库的解决方案。我的程序将有许多要求,我认为如果我使用缓存和OO数据库,我会得到很好的结果,但是我没有经验。

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

抱歉,如果我的英语不太好,我来自巴西。


阅读 761

收藏
2020-06-20

共1个答案

一尘不染

是的,redis对此很有帮助。但是要获得要点,基本上有两种缓存方法。根据您是否使用框架(和/或不使用框架),您可能会在标准情况下或通过使用插件来获得第一选择:

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

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

2020-06-20