使用redis实现热搜的原理就是维护一个zset集合,然后使用score作为当前搜索词的搜索量,score越高的搜索词就说明该搜索词热度越高。然后在每天凌晨十二点对热搜榜进行维护,将前十名热搜删除,防止热搜霸榜(这里有更好的热搜榜单维护方式,感兴趣的小伙伴可以自己了解一下)。
使用redis中的zset类型,主要使用的方法有两个:
zincrby: 对zset中的元素score进行自增自减操作
zrevrange:降序获得zset中的热搜榜单
写到这里大家应该已经明白了,当用户搜索时,使用zincrby方法对搜索词的score进行自加操作。查询热搜榜单时,使用zrevrange获得热搜前几名的搜索词。
首先在redis的工具类中封装zincrby和zrevrange两个方法
然后在用户执行搜索操作的时候对搜索词的score进行更改
写一下查询接口
service:
笔者这里写的是每天凌晨将前十个热搜删除,这个方法写的比较烂,大家可以自己查询学习一下比较好的热搜算法,对热搜进行维护。(可以将这些数据放入mysql统一管理或者使用一个变量作为热度因子对热搜真实热度进一步统计)
本文地址:http://dfvalve.xrbh.cn/quote/6886.html 迅博思语资讯 http://dfvalve.xrbh.cn/ , 查看更多