微信公众号 网站开发做医院的系统网站怎么做
news/
2025/10/9 10:49:22/
文章来源:
微信公众号 网站开发,做医院的系统网站怎么做,中国铁建集团门户网官网,万网网站设计Redis热搜 原理数据类型redis操作简单实现 实操封装方法执行方法最后使用springboot的定时任务对热搜榜单进行维护 原理
使用redis实现热搜的原理就是维护一个zset集合#xff0c;然后使用score作为当前搜索词的搜索量#xff0c;score越高的搜索词就说明该搜索词热度越高。… Redis热搜 原理数据类型redis操作简单实现 实操封装方法执行方法最后使用springboot的定时任务对热搜榜单进行维护 原理
使用redis实现热搜的原理就是维护一个zset集合然后使用score作为当前搜索词的搜索量score越高的搜索词就说明该搜索词热度越高。然后在每天凌晨十二点对热搜榜进行维护将前十名热搜删除防止热搜霸榜这里有更好的热搜榜单维护方式感兴趣的小伙伴可以自己了解一下。
数据类型
使用redis中的zset类型主要使用的方法有两个 zincrby: 对zset中的元素score进行自增自减操作 zrevrange:降序获得zset中的热搜榜单 写到这里大家应该已经明白了当用户搜索时使用zincrby方法对搜索词的score进行自加操作。查询热搜榜单时使用zrevrange获得热搜前几名的搜索词。
redis操作简单实现
首先创建一个zset集合
现在我们向zset中添加几条数据
假设现在搜索词为5的数据被五个用户分别搜索了五次使用zincrby模拟该操作。 现在执行查询操作查出热榜上前五的搜索词使用zrevrange模拟该操作。 至此理论成立开始实践
实操
封装方法
首先在redis的工具类中封装zincrby和zrevrange两个方法 public static void zincrby(String key , Object value , double score){//不管有没有该数据先add一边如果有该语句不执行如果没有就创建一条数据。//使用add会覆盖原来scoreredisTem.opsForZSet().addIfAbsent(key , value , 0);//获取原来的scoreDouble score1 redisTem.opsForZSet().score(key, value);//自增redisTem.opsForZSet().add(key , value , score1 score);}public static Set zrevrange(String key , long start , long end){return redisTem.opsForZSet().reverseRange(key , start , end);}执行方法
然后在用户执行搜索操作的时候对搜索词的score进行更改
//condition是搜索条件
RedisTemplateUtil.zincrby(RedisConstants.HOTSELECT , condition , 1);写一下查询接口 GetMapping(/getHotSelect)ApiOperation(获取热搜榜单)ApiImplicitParam(name count , value 获取数量)public Result getHotSelect(int count){if(count 0){return Result.BAD_REQUEST();}return videoService.getHotSelect(count);}service Overridepublic Result getHotVideo(int count) {Set zrevrange RedisTemplateUtil.zrevrange(RedisConstants.HOTVIDEO, 0, count - 1);return Result.OK(zrevrange);}最后使用springboot的定时任务对热搜榜单进行维护
笔者这里写的是每天凌晨将前十个热搜删除这个方法写的比较烂大家可以自己查询学习一下比较好的热搜算法对热搜进行维护。可以将这些数据放入mysql统一管理或者使用一个变量作为热度因子对热搜真实热度进一步统计 Scheduled(cron 0 0 0 * * *)private void deletehotSelect(){for(int i 0;i10;i){redisTem.opsForZSet().popMax(RedisConstants.HOTSELECT);}}完
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932439.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!