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

标签 php caching redis

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

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

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

最佳答案

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

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

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

关于php - 使用redis作为mysql数据库的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268950/

相关文章:

php - mysqli bind_param 中的动态变量绑定(bind)

php - 无法连接到内存缓存

redis - 查看保存到 redis 哈希中的列表

node.js - node-redis 无法通过 twemproxy 连接到 redis 实例

django - 使用 django celery 在 redis 上丢失连接时仅执行部分任务

javascript - php 如何检查字符串中某个单词是否重复

php - Zend MVC - 摆脱公用文件夹

php - Imagick、Fopen、PHP 和权限的服务器迁移问题

ios - 使用 AFNetworking 进行图像缓存

php - Symfony 缓存组件 (3.1) 不保存缓存