redis来处理论坛的最新回复要怎么处理

首页论坛的列表,一有新回复,就会把有新回复的帖子顶到最上面,这个如果交给redis来处理,该怎么办?
如果用sql更新最后一次回复时间的话,将最后回复时间降序就可以了。但是对于论坛来讲,回复很频繁,这样子处理不太好。

有人说要采用list

array(

    '时间戳'=>'帖子ID',
    '时间戳'=>'帖子ID',
    '时间戳'=>'帖子ID',
    '时间戳'=>'帖子ID',
   ......

)
现在就有一个问题,比方我帖子ID:17最后一次更新的时间戳是10000000000,也就是'10000000000’=》17,那现在更新帖子就必须要先把这条旧的记录去掉,再插入新的记录'10000000001’=》17,中间的这个步骤不知道要怎么实现

阅读 2k
2 个回答

首先需要确定你的论坛列表是否就是根据回复时间排序的,是的话可以使用 Redis 的有序集合,分数设置为时间戳。值为帖子id,这样有新的回复的时候更新分数,列表首先根据 redis 获得排序后的id然后从数据库查询对应数据

用redis做个消息队列,有很多种做法。
第一种:生产者消费者模式,主要用blpop来实现。(不推荐)
第二种:发布订阅模式,主要用pubsub来实现。
第三种:直接就用个list队列,新发布的全都push进去,ajax页面即时填充元素,不刷新情况下是不走后端的,直接前端取数据渲染,刷新情况下,直接从当天这个最新的redis队列取数据,传给前端渲染,然后服务器端跑个crontab脚本,定时把每天的数据落地到mysql。
还有其他很多种实现的方法。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题