附近的人实现(Redis 3.2 以上版本和es 性能比较)
1.
100条数据
2.
1000条数据
3.
10000条数据
4.100000
1.当 redis 也有100条数据
ES 开始获取距离50000米以内人
ES 获取数据总量:39
ES 获取数据耗时:168
Redis 开始获取距离Tom老师50000米以内人
Redis 获取数据总量:40
Redis 获取数据耗时:79
第二次测试:
ES 开始获取距离50000米以内人
ES 获取数据总量:39
ES 获取数据耗时:198
Redis 开始获取距离Tom老师50000米以内人
Redis 获取数据总量:40
Redis 获取数据耗时:60
数据量少的时候也有两三倍的差异
2. redis 也有1000条数据
ES 开始获取距离我500000000米以内人
ES 获取数据总量:960
ES 获取数据耗时:642
Redis 开始获取距离我500000000米以内人
Redis 获取数据总量:1000
Redis 获取数据耗时:164
第二次测试
ES 开始获取距离我500000000米以内人
ES 获取数据总量:960
ES 获取数据耗时:417
Redis 开始获取距离我500000000米以内人
Redis 获取数据总量:1000
Redis 获取数据耗时:110
3. redis 也有10000条数据
ES 开始获取距离我999999999米以内人
ES 获取数据总量:9040
ES 获取数据耗时:1559
Redis 开始获取距离我999999999米以内人
Redis 获取数据总量:10040
Redis 获取数据耗时:316
第二次测试
ES 开始获取距离我999999999米以内人
ES 获取数据总量:9040
ES 获取数据耗时:1204
Redis 开始获取距离我999999999米以内人
Redis 获取数据总量:10040
Redis 获取数据耗时:343
差距变成了四五倍
4. redis 也有100000条数据(基于es默认只能拿出10000条数据,100000就不做演示了)
结论:
es是java写的,redis 是c(想想也应该redis快)
java代码需要运行在虚拟机上
c 和 c++ 可以编译成平台本身的native机器码
直接在硬件运行的,通过指针可以直接操作硬件
描述:
c语言是计算机的高级语言。
高级语言主要是相对于汇编语言而言的,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言,能以简易的方式编译、处理低级存储器。
C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
redis 快,为什么?
①(纯内存)Redis将所有数据放在内存中,非数据同步正常工作中,是不需要从磁盘读取数据的,0次IO。内存响应时间大约为100纳秒,这是Redis速度快的重要基础。
②单线程(存取数据是单线程),没有多线程上下文切换,并且也没有锁造成阻塞
(单线程仅指Redis负责存取这块的线程只有一个,而非Redis中只有一个进程)
③多路I/O复用机制
I/O多路复用实际上是指多个连接的管理可以在同一进程。多路是指网络连接,复用只是同一个线程。在网络服务中,I/O多路复用起的作用是一次性把多个连接的事件通知业务代码处理,处理的方式由业务代码来决定。在I/O多路复用模型中,最重要的函数调用就是I/O 多路复用函数,该方法能同时监控多个文件描述符(fd)的读写情况,当其中的某些fd可读/写时,该方法就会返回可读/写的fd个数
测试代码:
@Test
public void compare(){int size = 100,radius = 50000;System.out.println("ES 开始获取距离我" + radius + "米以内人");Long esStartTime = System.currentTimeMillis();SearchResult result = nearbyService.search(myPointConfig.getLat(),myPointConfig.getLon(), radius, size, null);Long esEndTime = System.currentTimeMillis();Long esTime = esEndTime - esStartTime;System.out.println("ES 获取数据总量:" +result.getTotal());System.out.println("ES 获取数据耗时:" +esTime);//获取某坐标附近 radius 千米之内的人 单位千米System.out.println("Redis 开始获取距离我" + radius + "米以内人");Long redisStartTime = System.currentTimeMillis();GeoCoordinate coordinate = new GeoCoordinate(myPointConfig.getLon(), myPointConfig.getLat());List<GeoRadiusResponse> responses1 = jedisGeoUtil.geoRadius("nearby",coordinate,50);Long redisEndTime = System.currentTimeMillis();Long redisTime = redisEndTime - redisStartTime;System.out.println("Redis 获取数据总量:" +responses1.size());System.out.println("Redis 获取数据耗时:" +redisTime);}
附近的人实现(Redis 3.2 以上版本和es 性能比较)相关推荐
- Redis基础用法、高级特性与性能调优以及缓存穿透等分析
目录 一.Redis介绍 二.Redis数据结构及常用的命令 三.Redis持久化策略选择 四.内存管理与数据淘汰机制 五.Redis过期策略及实现原理 1 说明 2 设置过期时间 3 三种过期 ...
- Redis 宝典 | 基础、高级特性与性能调优
转载:Redis 宝典 | 基础.高级特性与性能调优 本文由 DevOpsDays 本文由简书作者kelgon供稿,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者:kelgon 链接: ...
- Redis 6.0 如何实现大幅度的性能提升?
导读: Redis可以轻松支撑100k+ QPS,离不开基于Reactor模型的I/O Multiplexing,In-memory操作,以及单线程执行命令避免竞态消耗.尽管性能已经能满足大多数应用场 ...
- crh寄存器_牛人的STM32学习笔记(寄存器版本).doc
牛人的STM32学习笔记(寄存器版本) 一.GPIO口的配置 STM32的DGPIO口最多可以有7组(GPIOa~GPIOg),而每一组GPIO口均有16个双向IO组成.并且没个IO口均可配置成8种模 ...
- springboot controller 分页查询_Spring Boot实战分页查询附近的人:Redis+GeoHash+Lua
前言 最近在做社交的业务,用户进入首页后需要查询附近的人: 项目状况:前期尝试业务阶段: 特点: 快速实现(不需要做太重,满足初期推广运营即可) 快速投入市场去运营 收集用户的经纬度: 用户在每次启动 ...
- B站【编程不良人】Redis教程整理学习笔记(超详细拓展)
Redis 1. NoSQL的引言 NoSQL( Not Only SQL ),意即不仅仅是SQL, 泛指非关系型的数据库.Nosql这个技术门类,早期就有人提出,发展至2009年趋势越发高涨. 2. ...
- 【Redis】 redis hash getKey getValue 两个的性能差别
本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载.有问题可以先私聊我,本人每天都在线,会帮助需要的人. 文章目录 1.概述 2 为何占用内存 1.概述 有个 ...
- redis配置文件 谷歌翻译版本
谷歌翻译版本的redis配置文件 # Redis配置文件示例. # # 注意,为了读取配置文件,Redis必须是以文件路径作为第一个参数开头: # # ./redis-server /path/to/ ...
- 扩展Redis的JSON处理模块,非常强调性能的RedisJson!速学
来源:blog.csdn.net/xiangzhihong8/article/details/121530019 # 概述 近期官网给出了RedisJson(RedisSearch)的性能测试报告,可 ...
最新文章
- GARFIELD@07-12-2005 DILBERT
- html文字超链接不让变色,css不让超链接变色怎么设置?
- 2020蓝桥杯省赛---java---B---5( REPEAT 程序)
- python 遍历usb设备_python程序员教你写脚本玩微信跳一跳,只要有耐心,你就是王者!...
- 大数据“高烧不断”,“得数据者得天下”的关键在哪?
- 【Python】eval+random库+字符串转列表+列表转字符串
- 10 年前被删的初恋,凌晨 1 点突然加我…屌丝的眼泪
- 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第0课0.14节使用画笔工具
- 使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理
- Android实现获取未接来电和未读短信数量的方法
- Java多线程开发——一个简单的数字加减小例子
- Pinterest先辈Wists的创业故事
- React 全新文档上线!
- Sql Server服务远程过程调用失败。[0x800706be]
- Java解压Jar文件
- android高德地图轨迹纠偏,RoutePath-(高德地图)根据定位点绘制路线+轨迹纠偏
- HDU 2002 计算球体积
- 抖音矩阵系统,短视频矩阵系统,抖音SEO系统源码。
- 如何在Axure中动态加载图表(Axhub Charts)
- 传统存储方式_海量非结构化数据存储方案