我对缓存了解的不多
大概就知道,如果用户请求一次这个数据,就存在内存里,免去了数据库查询的时间和性能消耗
如果下一次查询一样的数据,就直接从内存里返回给浏览器
但是如果每次查询的数据不一样呢?
比如 10w 个用户查看自己的个人主页,这时候每个用户查询的数据是不一样的
是不是意味着这 10w 多的数据会放在内存里? 那岂不是会把内存用光了
而且,我感觉好像随便用户请求什么数据,每次请求的数据,基本都不太可能一样,那缓存的究竟是什么?
菜鸟问问
求指点
1
misaka19000 2017-07-26 20:12:32 +08:00 via Android 1
这种非热点数据可以不缓存,比如某个的频率极高,这种时候可以对此页面进行数据缓存用户是大 V,他的主页被访问
|
2
misaka19000 2017-07-26 20:13:14 +08:00 via Android 1
楼上文字顺序乱了,不过应该还是能看懂得。。
|
3
maemual 2017-07-26 20:20:18 +08:00 1
你把缓存的粒度变细,总会有可以抽象出来的基本数据。比如用户的基本数据,用户的 id、昵称、性别之类的属性,不是只有在个人主页用到,全站的各个地方,任何人打开的页面都可能用到的数据。
|
4
jarlyyn 2017-07-26 20:23:50 +08:00 via Android 2
每个人 500k 数据的话,大概需要 50g 内存。
都不用上服务器,消费级平台都能上 64g 内存。 |
5
akira 2017-07-26 20:26:29 +08:00 1
和你想 的差不多,热点数据做缓存才有意义。
至于你说用户请求的数据不一样,一个网页实际上是由多块组成的,一样的地方总是会有的。 |
6
v1024 2017-07-26 20:28:27 +08:00 via iPhone 1
LRU Cache
|
7
sagaxu 2017-07-26 21:21:47 +08:00 via Android
假设 10 万用户是同一天访问,网站估值已经过亿了,买几台像样的缓存服务器还买不起了?
|
8
KgM4gLtF0shViDH3 2017-07-26 21:54:54 +08:00 via Android 1
存 redis 不行嘛
|
9
rogueone 2017-07-26 23:00:12 +08:00 1
热点数据用缓存要非常小心,因为缓存没过期,你干着急没办法的。比如用户发了一个帖子,如果个人主页缓存没过期,他刷主页自己的帖子都出不来。微博那种已经是非常多的手段综合起来实现的效果,针对不同的用户活跃度,推、拉、队列都有用过,以前看过微博的技术分享,现在肯定又改了不少。
10 万用户如果活跃度都不错的话,缓存不好使了,可以考虑给每个用户单独写一个队列了,每个用户请求自己的队列。 |
10
lyragosa 2017-07-26 23:11:53 +08:00 1
如果到了有 10w 用户同时访问你网站的时候……
哪里还用得着上 v2 啊,要么就是公司 CTO,随便说点技术逼格词汇让手下解决,要么就是网站老板,每天在办公室吹吹风指挥手下就行了 |
11
piku 2017-07-27 08:21:56 +08:00 via Android 1
这个应该和 Web 特性有关。10w 用户中变量只有 id page index 等是变量,头文件脚文件 css 等有共性的是可缓存。如果每个用户的这些都不一样就没法缓存了,变成了 10w 独立主机了
|
12
julyclyde 2017-07-29 12:34:27 +08:00
这问题描述就有问题
什么叫自己的 谁的自己? 如果是访客访问他们自己的网页,跟你有啥关系…… |