美文网首页
redis Redis高级数据类型GEO&HyperLogLog

redis Redis高级数据类型GEO&HyperLogLog

作者: dylan丶QAQ | 来源:发表于2020-09-15 22:45 被阅读0次

起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾,决定引入redis非关系型数据库作为缓存层,使得数据并不能直接命中数据库,减少访问数据库带来的压力,从而加快运行速度。


1、Redis高级数据类型GEO&HyperLogLog详解

1.1. zset扩展类型geo

1.1.1. GEO功能介绍

GEO功能是在Redis 3.2版本后提供的,支持存储地理坐标的一个数据结构,可以用来做类似摇一摇,附近的人,周边搜索的功能

# 语法类型
geoadd key 经度 纬度 成员 [经度 纬度 成员...]
# geoadd命令必须以标准的x y member结构来接受参数,必须先输入经度后输入纬度

geoadd能够记录的坐标是有限:

  • 非常接近两极的区域无法索引
  • 精确的坐标限制是由 EPSG:900913等坐标系统定义
  • 经度:-180到180度之间
  • 纬度:-85.05112878到85.05112878度之间
  • 如果超出这个范围则会报错

1.1.2. 新增和查询

# 添加一批城市
geoadd china:city 116.408 39.904 beijing 121.445 31.213 shanghai 113.265 23.108 guangzhou 114.109 22.544 shenzhen 108.969 34.285 xian 108.55 34.09 changan 
# 查询
geopos china:city beijing shanghai

1.1.3.获得节点间距离

geodist china:city shanghai beijing km

unit:

  • m : 米
  • km :千米
  • mi :英里
  • ft : 英尺
  • 默认是m
  • 会有0.5%的误差

1.1.4. 周边搜索

georadius china:city 121.445 31.213 1300 km withdist withcoord
georadius china:city 121.445 31.213 1300 km withdist withcoord asc count 3
georadiusbymember china:city beijing 1300 km withdist withcoord asc count 3
  • withdist : 返回节点距离
  • withcoord : 带上坐标
#节点hash
geohash china:city xian changan
1) "wqj7p9ku9e0"
2) "wqj1yjgswk0"

1.1.5. 删除节点

zrem china:city changan

1.1.6. 业务实现

x y name1 x y nam2
x y canyin:123 x y canyin:456

1.2. hyperloglog

这个数据类型其实就做了一件事,统计不重复的数据量
比如要记录我们网站的UV量

sadd 20200208 1 2 3 4 5 6 5 4 3 2 1
scard 20200208

只用来存放基数

pfadd 20200207 1 2 3 4 5 6 5 4 3 2 1 #添加记录基数
pfadd 20200206 1 2 3 4 5 6 7 8 9 10
pfcount 20200206 #返回基数
pfmerge 202002 20200206 20200207 #pfmerge newkey sourcekey1 sourcekey2 合并生成了一个新key,原来的key不会消失

还有一个问题

  • hyperloglog是一个基数估算算法,有一定误差的
  • 误差值在0.81%
  • hyperloglog的key占用空间很小只有12K,而你用set就需要把这些value都要保存,set存一年数据有多大

不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!

相关文章

  • redis Redis高级数据类型GEO&HyperLogLog

    起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾...

  • redis常用命令教程

    Redis 基础教程 Redis 教程、Redis 安装、Redis 配置、Redis 数据类型 Redis 命令...

  • Spring Boot 2.0 整合 Redis(Lettuce

    【Redis 系列】 Redis 数据类型【Redis 系列】 Redis 数据命令【Redis 系列】 Redi...

  • redis 第三讲 数据类型

    redis 五大数据类型 哪里获取redis常见数据类型操作命令 参考 redis 键(key) redis 字符...

  • Redis从入门到应用

    初识Redis Redis概念 Redis安装 Redis的五种数据类型 操作Redis PHP的Redsi扩展 ...

  • 面试遇到问题(五)

    Redis 参考 菜鸟教程redis常见面试题 redis 支持哪些数据类型 redis支持五种数据类型:字符串(...

  • 2018-04-19

    python与redis交互 redis数据类型: redis一共有5类数据类型:string, hash, li...

  • Redis

    Redis 内容:1、Redis简介2、Redis 安装和基础管理3、Redis 数据类型4、Redis 的消息模...

  • 【Redis 系列】redis 学习五,多学习一些 redis

    【Redis 系列】redis 学习五,多学习一些 redis 的三种特殊数据类型 redis 三种特殊的数据类型...

  • Redis

    Redis 简介 redis是一种高级的key:value存储系统,其中value支持五种数据类型: 字符串(St...

网友评论

      本文标题:redis Redis高级数据类型GEO&HyperLogLog

      本文链接:https://www.haomeiwen.com/subject/krpqyktx.html