首页论坛的列表,一有新回复,就会把有新回复的帖子顶到最上面,这个如果交给redis来处理,该怎么办?如果用sql更新最后一次回复时间的话,将最后回复时间降序就可以了。但是对于论坛来讲,回复很频繁,这样子处理不太好。有人说要采用listarray('时间戳'=>'帖子ID','时间戳'=>'帖子ID','时间戳'=>'帖子ID','时间戳'=>'帖子ID',......)现在就有一个问题,比方我帖子ID:17最后一次更新的时间戳是10000000000,也就是'10000000000’=》17,那现在更新帖子就必须要先把这条旧的记录去掉,再插入新的记录'10000000001’=》17,中间的这个步骤不知道要怎么实现
2 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
首先需要确定你的论坛列表是否就是根据回复时间排序的,是的话可以使用Redis的有序集合,分数设置为时间戳。值为帖子id,这样有新的回复的时候更新分数,列表首先根据redis获得排序后的id然后从数据库查询对应数据
www说
TA贡献1775条经验 获得超8个赞
用redis做个消息队列,有很多种做法。第一种:生产者消费者模式,主要用blpop来实现。(不推荐)第二种:发布订阅模式,主要用pubsub来实现。第三种:直接就用个list队列,新发布的全都push进去,ajax页面即时填充元素,不刷新情况下是不走后端的,直接前端取数据渲染,刷新情况下,直接从当天这个最新的redis队列取数据,传给前端渲染,然后服务器端跑个crontab脚本,定时把每天的数据落地到mysql。还有其他很多种实现的方法。。。
添加回答
举报
0/150
提交
取消