Spring boot基于redis实现附近的人(附源码下载)
此文章是针对去年写的Java基于Redis实现“附近的人 进行业务优化!
核心源码
public class NearbyPO {@NotNull(message = "id值不能为空")private Integer id;@NotBlank(message = "名称不能为空")private String name;@NotNull(message = "城市编码不能为空")private Integer cityCode;@NotNull(message = "地区编码不能为空")private Integer adCode;@NotNull(message = "经度不能为空")private Double longitude;@NotNull(message = "纬度不能为空")private Double latitude;/*** 保存时间,不依赖前端传参*/private Long saveTime;
}
// 附近的人最新版
public Result<List<NearbyBO>> nearbyNew(NearbyPO paramObj) {// 缓存key值String cacheKey = String.format(NEARBY_CACHE_KEY, paramObj.getCityCode(), paramObj.getAdCode());long currentTimeMillis = System.currentTimeMillis();// 设置当前用户缓存时间paramObj.setSaveTime(currentTimeMillis);// 使用hash更加快速的定位到用户缓存信息,便于删除更新redisDao.hset(cacheKey, paramObj.getId() + "", JSONObject.toJSONString(paramObj));// 从当前地区缓存中获取全部用户(包括用户自己)Map<String, String> cacheAll = redisDao.hGetAll(cacheKey);if (cacheAll.isEmpty() || cacheAll.size() == 1) {return new Result<List<NearbyBO>>(true, new ArrayList<>());}// 结果集,-1是要排除用户自己List<NearbyBO> result = new ArrayList<NearbyBO>(cacheAll.size() - 1);for (String item : cacheAll.keySet()) {NearbyPO cacheData = JSONObject.parseObject(cacheAll.get(item), NearbyPO.class);// 计算缓存时长long twoDayMinute = (cacheData.getSaveTime() - currentTimeMillis) / 60000;// 八小时有效if (twoDayMinute > 480) {// 被动触发删除过期缓存redisDao.hdel(cacheKey, paramObj.getId() + "");continue;}// 排除用户自己if (paramObj.getId().equals(cacheData.getId())) {continue;}// 计算两坐标点距离double distance = countDistance(paramObj.getLongitude(), paramObj.getLatitude(), cacheData.getLongitude(),cacheData.getLatitude());// 10KM之内有效if (distance > 10000) {continue;}result.add(new NearbyBO(cacheData.getId(), cacheData.getName(), distance));}return new Result<List<NearbyBO>>(true, result);
}
源码下载(资源1分,包含去年的实现源码):https://download.csdn.net/download/qq_19260029/10701010
,没有积分的可评论留下邮箱私发。
测试访问地址:
- http://localhost:8080/nearby_new?id=1&name=不羁鱼&cityCode=440300&adCode=440305&longitude=113.9672334290&latitude=22.5829485425
- http://localhost:8080/nearby_new?id=2&name=王力宏&cityCode=440300&adCode=440305&longitude=113.9672334290&latitude=22.5229485425
end
推荐文章:
MyBatis基于Spring-boot集成通用Mapper以及pagehelper分页插件
RedisDesktopManager连接远程Linux系统的Redis服务
Spring boot基于Redis缓存商城分类,商品信息
Spring boot基于redis实现附近的人(附源码下载)相关推荐
- Spring Boot 和 Vue 前后端分离教程(附源码)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 梁小生0101 juejin.im/post/5c622 ...
- spring boot高校二手教材管理平台 毕业设计-附源码231057
目 录 摘要 1 1 绪论 1 1.1 研究意义 1 1.2开发现状 1 1.3论文结构与章节安排 1 2高校二手教材管理平台 系统分析 3 2.1 可行性分析 3 2.2 系统流程分析 3 2.2 ...
- 小程序+spring boot心理测评与活动管理系统毕业设计-附源码191752
摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,心理测评与活动管理小程序被用户普遍使用,为方 ...
- Spring Boot整合JWT实现用户认证(附源码)
点击上方"程序IT圈",选择"置顶公众号" 每天早上8点50分进来看看,就是最大的支持 来源:https://dwz.cn/yv1Do6e3 什么是JWT JW ...
- 厉害了!Spring Boot + Vue 开发移动端商城(附源码、文档、视频)!
Java大联盟 致力于最高效的Java学习 关注 B 站搜索:楠哥教你学Java 获取更多优质视频教程 前言 最近有不少小伙伴留言希望楠哥出一套 Spring Boot + Vue 项目实战教程, ...
- spring boot大学生就业质量调查分析系统 毕业设计-附源码161457
大学生就业质量调查分析系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题 ...
- java图书销售系统_基于springboot的小型图书销售系统 源码下载
源码介绍 本系统采用B/S架构,服务器用的是tomcat服务器,数据库使用mysql,数据库连接池使用的是阿里开源的druid连接池,实现了前后端分离,后端框架基于spring boot整合mybat ...
- 单机redis工具类的使用附源码
单机redis工具类的使用附源码 问题背景 项目搭建 代码测试 总结 Lyric: 怎么隐藏我的悲伤 问题背景 redis常用的工具类 注意事项: 默认已安装redis,可以使用安装包安装看这篇文章, ...
- 基于Simulink雷达系统建模仿真(附源码)
目录 一.系统架构 二.运行结果 2.1示例模拟 2.2 天线增益/方向的影响 2.3 接收器 LO 上的相位噪声使能 2.4 相位噪声的影响 三.源码 此示例显示如何设置由发射器.带目标的信道和接收 ...
最新文章
- java-mybatis环境搭建
- 升级python2至python3解决依赖关系
- 带你看android的内心世界
- 基于遗传算法实现自动组卷
- PXC5.7(Percona XtraDB Cluster)+HAproxy集群部署
- Concurrent包工具类使用
- 1030利用三层交换机实现VLAN间通信
- 飞鸽推广的由咪商务微博
- uniapp手写_【转】uni-app框架纯手写微信小程序开发左侧滑动菜单
- couchbase php,升级PHP7时couchbase扩展导入的bug
- idea下使用Maven找不到类
- 学习DX编程中的一个很丢脸,但是不知道是为什么的问题
- SecureCRT 7.3.4 安装图解----破解图解
- nanoCAD Pro 10.0.4447.1969 Build 4520中文免费版
- CCL“中国法研杯”相似案例匹配评测竞赛 - TOP队伍攻略分享
- Visual studio之C#的一些常见问题
- Linux挂载逻辑卷
- Manger配置同步任务
- peewee的使用与异步peewee-async在tornado中的使用总结
- 2020年最好用的chrome插件-CSDN浏览器助手评测