需求:展示10条热搜数据,数据要满足48小时内的数据,每小时更新一次热搜数据
实现:
1、浏览的数据行为记录到数据库中(记录数据id,添加时间)
2、获取热搜数据,根据数据的添加时间,查询48小时之内的数据,并且删除48小时之前的数据(删除无用数据)
GROUP BY 数据id,并按数据id计数(count函数)num,然后按num倒序排序,LIMIT 5
***********加入redis开始**********
从数据库中查到热搜数据后,存入redis里并设置1小时过期时间
然后从redis获取热搜数据,如果有数据,返回,如果redis没有数据,说明热搜数据已过期,需要重新加载热搜数据,执行步骤2。
优化:可能会存在从数据库查到的数据量小于10条,不满足需求,这种情况可以遍历缓存中的数据,从缓存拿数据时,注意要排除缓存中的数据id和数据库中的数据id一样的数据,避免展示的热搜数据重复,每从缓存拿一条数据,就判断下结果集大小,符合需求数量,跳出循环即可。
***********加入redis结束**********
3、返回查询到的数据集