首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel缓存大量查询

Laravel缓存大量查询
EN

Stack Overflow用户
提问于 2016-03-24 19:39:38
回答 2查看 1.3K关注 0票数 1

我有一个电子商务网站,其中有多达100万种产品,该网站是在许多地区。每个产品页面有大约10-15个查询到数据库,像通过url获取产品,获取产品类别和获取产品格式等。目前im使用的是基于laravel文件的缓存,而不是产品页面上的缓存。

问题是产品页面也是各种爬虫/机器人的目标,这意味着对数据库的大量查询。此外,如果我缓存一个产品页面,比方说1小时,它不太可能在这段时间内被击中,因为这些机器人的目标是所有的页面。另外,因为我有不同的区域(不同的域),这意味着页面的数量是由区域计数(5-10)计时的。

所以我不知道如何缓存它。我想过永远缓存所有这些查询(没有时间限制),并在产品发生变化时更改缓存。这是要走的路吗?laravel会为每个被缓存的查询创建一个缓存文件吗?如果是,那么文件数量可能会成为一个问题。

我也考虑过使用redis。但是我想我会在缓存那么多键的时候耗尽内存?你知道我该如何缓存它吗?提前谢谢。

Edit1:

我想过用redis进行html缓存。这样我就可以缓存例如产品价格及其html。任何ides,我需要缓存多少内存,比方说1000万到2000万个键值为html?

EN

回答 2

Stack Overflow用户

发布于 2016-03-24 19:52:42

有一个用于缓存查询的laravel包。

https://github.com/dwightwatson/rememberable

代码语言:javascript
复制
User::first()->remember(1440)->posts()->get();
票数 1
EN

Stack Overflow用户

发布于 2016-03-24 21:23:37

一些缓存的想法:

如果用户没有登录,nginx会缓存整个HTML页面。

再获得4个VPS,只在每个VPS上放入memcache,并对所有查询进行memcache。继续添加更多的服务器,直到您有足够的内存来缓存所有查询。

再获取4个VPS,并在每个VPS上放置mysql,并使用所有可用内存进行查询缓存。使用分片(而不是主从)将对某些产品的请求路由到某些机器。继续添加计算机,直到所有数据都保存在查询缓存中

重写系统,这样它就不需要缓存就能以可接受的速度运行。当缓存用于更大的吞吐量时效果最好,而不是提高速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36199308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档