数据库关键字段:up 、 down 、 time 、 rank
现在情况是 reddit 的数学公式是有的。参考
目前采用的方案是按时间查询出来 20 条,然后再把这些按照按照上面的数学公式给 rank 赋值,最后使用快排,排列 rank.
但是感觉这样问题还是挺多的:
所以有没有一个比较合适的方法,能够让库里面所有的都按照这个数学模型排序?就是 sql 语句的 order by 是按照计算之后的值
能够想到的方法:
1
cctvsmg 2016-09-06 23:46:28 +08:00
在 select 里面计算排序公式,作为一个值,然后 order by 这个值
|
2
aisk 2016-09-07 00:17:49 +08:00
大概看了一下,这个只需要在投票的时候重新算一下帖子的分数,写进数据库就好了,查询直接 order by score 即可。
|
3
9hills 2016-09-07 00:28:37 +08:00 via iPad
定时计算,然后存到缓存中供排序使用即可。用 redis 的话排序都省了,只需要定时更新 score 即可
这个本身并不是一个强时效的需求,定时计算即可 |
7
9hills 2016-09-07 10:09:16 +08:00 1
|
8
polandeme OP @9hills 明白了,现在采用了 vote 的触发,这样就暂时不在中间加一层 redis 了,目前是 mysql 数据库。
对 redis 这种其实并没有具体应用过,先去看看,回头去做一下对比,顺便学点东西。 谢谢 |
11
aisk 2016-09-07 15:13:48 +08:00
说按时间触发的都是糊弄楼主的。
|