1
knightluffy 2015-04-10 23:30:19 +08:00
因为你这个东西对客户来说要求不是要很精确,你需要自己做一个缓存层,浏览量一段时间update一次到数据库,所有东西都从缓存层去拿。。不要去频繁读写数据库。。
|
2
dbfox OP |
3
jianghu52 2015-04-11 00:16:12 +08:00
如同@knightluffy 所说,内存是个好选择。但是如果你用户再继续多下去,比如像双十一那种数据流量,估计光靠内存都不解决不了。
|
4
baskice 2015-04-11 04:38:22 +08:00
思路有这么几种:
1高峰时改为每秒或每分钟更新一次 2高峰时从每个更新改为采样,每十个访客中采样一个等 3改进算法 4硬堆CPU…… |
5
kslr 2015-04-11 07:56:13 +08:00 via Android
这个值,不要求精确,不要求实时 里面空间很大
|
6
humiaozuzu 2015-04-11 08:39:05 +08:00
1. 单独开一个表存这些 counter
2. 丢 redis 存 counter,天生干这个的,key 用 news:123:views:150411 类似格式 top xxx 的结果可以一小时计算一次,更新到 redis 里面 |
7
chenjf2k 2015-04-11 09:00:21 +08:00
select top 100 *from news with(nolock) ...
|
8
zeayes 2015-04-11 09:52:29 +08:00
新闻内容存数据库,对应的counter用redis的zset存储。
|
9
dbfox OP @zeayes
@humiaozuzu 在 select 的时候不好搞吧?还有分页都不好搞吧 select top 100* from news where id in( 1,2,3434) order by ?? |
10
zeayes 2015-04-11 23:55:54 +08:00
select的时候,把counter组装一下就ok了。
分页为啥不好搞呢? 这个sql没看太懂,既然id都指定了,为啥还要top 100? |