Laravel Redis 缓存

Posted

技术标签:

【中文标题】Laravel Redis 缓存【英文标题】:Laravel Redis Cache 【发布时间】:2018-01-30 17:33:42 【问题描述】:

我对 Redis 缓存和 laravel 有疑问。默认情况下,laravel 使用 file 将视图缓存到文件并从该缓存中加载它们。

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

我也在使用 redis 作为会话驱动程序,这给了我什么?

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

【问题讨论】:

【参考方案1】:

redis 可以给你两个好处:

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

关于缓存什么?

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

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

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

【讨论】:

以上是关于Laravel Redis 缓存的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 使用 Redis 缓存非常慢

在 Laravel 中使用 Redis 缓存图像?

Redis 连接 [缓存] 未配置 laravel 错误

Laravel 中使用 Redis 锁解决缓存击穿问题

Laravel 中使用 Redis 锁解决缓存击穿问题

laravel5.5缓存系统