此文章是针对去年写的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
,没有积分的可评论留下邮箱私发。

测试访问地址:

  1. http://localhost:8080/nearby_new?id=1&name=不羁鱼&cityCode=440300&adCode=440305&longitude=113.9672334290&latitude=22.5829485425
  2. 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实现附近的人(附源码下载)相关推荐

  1. Spring Boot 和 Vue 前后端分离教程(附源码)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 梁小生0101 juejin.im/post/5c622 ...

  2. 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 ...

  3. 小程序+spring boot心理测评与活动管理系统毕业设计-附源码191752

    摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,心理测评与活动管理小程序被用户普遍使用,为方 ...

  4. Spring Boot整合JWT实现用户认证(附源码)

    点击上方"程序IT圈",选择"置顶公众号" 每天早上8点50分进来看看,就是最大的支持 来源:https://dwz.cn/yv1Do6e3 什么是JWT JW ...

  5. 厉害了!Spring Boot + Vue 开发移动端商城(附源码、文档、视频)!

      Java大联盟 致力于最高效的Java学习 关注 B 站搜索:楠哥教你学Java 获取更多优质视频教程 前言 最近有不少小伙伴留言希望楠哥出一套 Spring Boot + Vue 项目实战教程, ...

  6. spring boot大学生就业质量调查分析系统 毕业设计-附源码161457

    大学生就业质量调查分析系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题 ...

  7. java图书销售系统_基于springboot的小型图书销售系统 源码下载

    源码介绍 本系统采用B/S架构,服务器用的是tomcat服务器,数据库使用mysql,数据库连接池使用的是阿里开源的druid连接池,实现了前后端分离,后端框架基于spring boot整合mybat ...

  8. 单机redis工具类的使用附源码

    单机redis工具类的使用附源码 问题背景 项目搭建 代码测试 总结 Lyric: 怎么隐藏我的悲伤 问题背景 redis常用的工具类 注意事项: 默认已安装redis,可以使用安装包安装看这篇文章, ...

  9. 基于Simulink雷达系统建模仿真(附源码)

    目录 一.系统架构 二.运行结果 2.1示例模拟 2.2 天线增益/方向的影响 2.3 接收器 LO 上的相位噪声使能 2.4 相位噪声的影响 三.源码 此示例显示如何设置由发射器.带目标的信道和接收 ...

最新文章

  1. java-mybatis环境搭建
  2. 升级python2至python3解决依赖关系
  3. 带你看android的内心世界
  4. 基于遗传算法实现自动组卷
  5. PXC5.7(Percona XtraDB Cluster)+HAproxy集群部署
  6. Concurrent包工具类使用
  7. 1030利用三层交换机实现VLAN间通信
  8. 飞鸽推广的由咪商务微博
  9. uniapp手写_【转】uni-app框架纯手写微信小程序开发左侧滑动菜单
  10. couchbase php,升级PHP7时couchbase扩展导入的bug
  11. idea下使用Maven找不到类
  12. 学习DX编程中的一个很丢脸,但是不知道是为什么的问题
  13. SecureCRT 7.3.4 安装图解----破解图解
  14. nanoCAD Pro 10.0.4447.1969 Build 4520中文免费版
  15. CCL“中国法研杯”相似案例匹配评测竞赛 - TOP队伍攻略分享
  16. Visual studio之C#的一些常见问题
  17. Linux挂载逻辑卷
  18. Manger配置同步任务
  19. peewee的使用与异步peewee-async在tornado中的使用总结
  20. 2020年最好用的chrome插件-CSDN浏览器助手评测

热门文章

  1. 性能测试失败原因之性能测试十宗罪
  2. 试听 QQ音乐和网易云音乐一
  3. Kali无法打开Firefox浏览器
  4. C语言杂记 0x01
  5. PAT乙级 1089 狼人杀-简单版 (20 分)
  6. 今天我要对人人商城多商户,和分销功能动动刀,使用起来会更香吧
  7. 步步详解IntelliJ IDEA创建springboot项目并运行
  8. op的平衡电阻以及输入电阻
  9. iOS开发:字符串设置指定内容的文字颜色、文字大小、文字字体类型
  10. 区块链公司趣链科技提升竞争力搭建可信桥梁 助力“区块链+金融”