Laravel Redis 缓存

标签 laravel caching laravel-5 redis amazon-elasticache

我有一个关于 Redis 缓存和 Laravel 的问题。默认情况下,laravel 使用将 View 缓存到文件并从该缓存加载它们的文件。

事情是这样的,我开始在我的 Laravel 5.4 项目中使用 ElastiCache 和 Redis。如果我将驱动程序更改为 redis 并且它开始缓存(我可以通过加载时间来判断)但它实际上缓存了什么?它会自动缓存和检索我的 View 吗? CSS?杰斯?还有什么吗?

我也在使用 redis 作为 session 驱动程序,这给我带来了什么?

是否也值得缓存数据库?我计划每小时缓存整个数据库,然后每当将新项目添加到数据库时,将其添加到现有缓存中。那可能吗?

最佳答案

redis 可以给你两个好处:

  1. 更快的数据检索。与基于文件或基于数据库的缓存系统(例如 memcached)相比,任何基于内存的缓存系统都可以为您提供这种优势。
  2. redis 中的灵活数据保存。 Redis 支持许多数据类型的存储,如字符串、列表、集合、排序集合等。

关于缓存什么?

  1. 缓存频繁请求的东西。如果您的客户向您请求或查询某些内容,而您没有缓存,则您将不得不从数据库中查询它,这会给您带来磁盘 I/O 时间成本。如果东西很重,那么 IO 成本会更大并减慢您的服务器。所以聪明的做法是,只查询一次,然后通过合适的数据类型存储将其保存到redis中。之后用缓存检索数千。但是您不需要缓存整个数据库。看起来很粗鲁。当您更新数据库中的内容时,只需从缓存中删除,下次有人查询时,它会再次保存到缓存中。

  2. 关于 session 。对于 http 服务器来说,这是非常频繁的访问,因此如果您的应用服务器有很多很多人,那么每个用户进入缓存的 session 都比文件或数据库更轻量级。

  3. 缓存静态文件。其实我没有处理过这个。但它绝对可以做到这一点!例如。在现代架构中,通常有一个 Http 服务器站在你的 laravel 之前,比如 nginx。这样,您将使用 nginx 直接为静态文件提供服务。如果你想减少磁盘 io,你可以添加一个像 redis2-nginx-module 这样的模块。让 nginx 做同样的事情:将静态文件保存到 redis 一次并为数千人提供服务。

关于Laravel Redis 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817493/

相关文章:

php - 我如何在 laravel 5 中连接 mongodb?

php - 如何修复对未定义函数 link_to_route() laravel 5 的错误调用?

php - laravel中如何根据id数组获取分页数据

iphone - iOS - 异步缓存和加载图像

php - 使用 Laravel Collective 选择输入

javascript - 我应该将 javascript 框架与我的应用程序捆绑在一起还是使用公共(public) CDN?

java - 使用@CacheEvict中的键清除单个端点的缓存

php - Laravel 5.5 仅在需要字段时验证最小长度

laravel - 为什么我的 Laravel 队列命令在 Redis 队列驱动程序上随着时间的推移变慢?

mysql - 将 Laravel 上传到服务器后,我在路由页面上收到一条错误消息