我有一个关于 Redis 缓存和 Laravel 的问题。默认情况下,laravel 使用将 View 缓存到文件并从该缓存加载它们的文件。
事情是这样的,我开始在我的 Laravel 5.4 项目中使用 ElastiCache 和 Redis。如果我将驱动程序更改为 redis 并且它开始缓存(我可以通过加载时间来判断)但它实际上缓存了什么?它会自动缓存和检索我的 View 吗? CSS?杰斯?还有什么吗?
我也在使用 redis 作为 session 驱动程序,这给我带来了什么?
是否也值得缓存数据库?我计划每小时缓存整个数据库,然后每当将新项目添加到数据库时,将其添加到现有缓存中。那可能吗?
最佳答案
redis 可以给你两个好处:
- 更快的数据检索。与基于文件或基于数据库的缓存系统(例如 memcached)相比,任何基于内存的缓存系统都可以为您提供这种优势。
- redis 中的灵活数据保存。 Redis 支持许多数据类型的存储,如字符串、列表、集合、排序集合等。
关于缓存什么?
缓存频繁请求的东西。如果您的客户向您请求或查询某些内容,而您没有缓存,则您将不得不从数据库中查询它,这会给您带来磁盘 I/O 时间成本。如果东西很重,那么 IO 成本会更大并减慢您的服务器。所以聪明的做法是,只查询一次,然后通过合适的数据类型存储将其保存到redis中。之后用缓存检索数千。但是您不需要缓存整个数据库。看起来很粗鲁。当您更新数据库中的内容时,只需从缓存中删除,下次有人查询时,它会再次保存到缓存中。
关于 session 。对于 http 服务器来说,这是非常频繁的访问,因此如果您的应用服务器有很多很多人,那么每个用户进入缓存的 session 都比文件或数据库更轻量级。
缓存静态文件。其实我没有处理过这个。但它绝对可以做到这一点!例如。在现代架构中,通常有一个 Http 服务器站在你的 laravel 之前,比如 nginx。这样,您将使用 nginx 直接为静态文件提供服务。如果你想减少磁盘 io,你可以添加一个像 redis2-nginx-module 这样的模块。让 nginx 做同样的事情:将静态文件保存到 redis 一次并为数千人提供服务。
关于Laravel Redis 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817493/