三种特殊数据类型

geospatial(地理位置)

  1. 朋友定位 附近的人 打车距离计算
  2. Redis的Geo在Redis3.2版本就出了,这个功能可以推算地理位置的信息,两地之间的距离,方圆n里的人等等
  3. 只有六个命令
    有效经度:-180~180
    有效维度:-85.05112878~85.05112878
# geoadd 添加地理位置  将指定的地理空间位置(纬度、经度、名称)添加到指定的key中
# 规则:两级无法直接添加,一般会直接下载城市数据,然后通过java程序一次性导入
# 参数:key 经度 维度 名称
geoadd china:city 116.40 39.90 beijing                      # 添加城市
geoadd china:city 121.47 31.23 shanghai
geoadd china:city 160.50 29.53 chongqing
geoadd china:city 114.05 22.52 shenzhen
geoadd china:city 120.16 30.24 hangzhou 108
geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian   # 一次添加多个城市# geopos:从key里返回所有给定位元素的位置(经度和维度),是一个坐标值,得到的信息不一定是存储的数据
geopos china:city beijing                                   # 获取存储的城市地理信息
geopos china:city beijing chongqing                         # 一次性获取多个# geodist 返回给定两个地点的位置
# 如果其中一个不存在,则返回nil
# 指定单位:m km mi(英里) ft(英尺) 默认是m
geodist china:city beijing chongqing                        # 返回的是直线距离
geodist china:city beijing chongqing km                     # 指定单位# georadius 以给定的经纬度为半径,找出某一半径内的元素
georadius china:city 110 30 1000 km                         # (110 30)为定位基准,1000 km为半径的大小,前提是china:city中含有这些城市
georadius china:city 110 30 1000 km withdist                # 查出城市同时给出直线距离(显示直线距离)
georadius china:city 110 30 1000 km withcoord               # 查出城市的同时查出经纬度(显示他人的定位信息)
georadius china:city 110 30 1000 km withdist withcoord count 3  # 查出城市的同时查出直线距离 经纬度 限定查询个数# georadiusbymember:找出位于指定元素周围的其他元素
georadiusbymember china:city beijing 1000 km                # 查找距离北京1000 km的城市 # geohash(了解)返回一个或多个位置元素的geohash表示(返回11个字符的Geohash字符串)
geohash china:city beijing                                  # 将二维的经纬度转换为一维的字符串
geohash china:city beijing chongqing                        # 如果两个字符串越接近,则距离越近
  1. GEO底层的实现原理:Zset,可以使用Zset操作geo
zrange china:city 0 -1                                       # 查看地图中全部元素
zrem china:city beijing                                     # 移除指定元素

hyperloglog

  1. 什么是基数:一个集合中不重复的元素的个数,可以接受误差(0.81%)

A{1,3,5,7,8,7} 基数:5

  1. Redis 2.8.9版本更新了Hyperloglog的数据结构
  2. Redis Hyperloglog是用来做基数统计的算法。 优点:占用的内存是固定的 12KB,若从内存角度来比较的话Hyperloglog为首选
  3. 应用:网页的UV(一个人访问一个网站多次还是算作一个人)
    • 传统的方式:set保存用户的id,然后就可以统计set中的元素数量作为标准判断
    • 这种方法如果保存大量的用户id会比较麻烦。我们的目的是为了计数而不是保存用户id
  4. 基本命令
pfadd myhyper a b c d e f g a b c                    # 创建一个hyperloglog
pfcount myhyper                                     # 求基数,结果:7
pfadd myhyper j k l                                 # 向Hyperloglog中添加元素
pfcount myhyper                                     # 求基数,结果:10
pfadd myhyper2 a o p                                # 创建一个hyperloglog
pfmerge myhyperl3 myhyper myhyper2                  # 合并myhyper和myhyper2为myhyper3
pfcount myhyper3                                    # 求基数,结果:12

如果允许容错Hyperloglog为首选
如果不允许容错,则使用set或自己的数据结构

bitmaps

bitmaps 和 hash 结合,就有了 布隆过滤器,用于解决缓存击穿问题

  1. 位存储;Bitmaps位图,是一种数据结构,都是操作二进制位来进行记录,只有0和1两个状态
  2. 基本命令
# 使用bitmap记录周一到周日的打卡,0为未打卡,1为打卡
setbit sign 0 1                         #
setbit sign 1 0
setbit sign 2 0
setbit sign 3 1
setbit sign 4 1
setbit sign 5 0
setbit sign 6 0# 查看是否打卡
getbit sign 3                           # 查看周四是否打卡
getbit sign 6                           # 查看周日是否打卡# 统计打卡天数
bitcount sign                           # 不加范围,默认统计全部
  1. 应用:

    • 统计疫情感染人数:0为未感染,1为感染
    • 统计用户信息,活跃/不活跃,登录/不登录,打卡
    • 其他两个状态的情况

【狂神说Redis】4 三种特殊数据类型相关推荐

  1. Redis中三种特殊数据类型

    本文来说下Redis中三种特殊数据类型 文章目录 Gerspatial地理位置 Hyperloglog基数统计 Bitmap位图 Gerspatial地理位置 一共 6 个命令: GEOADD GEO ...

  2. redis学习--三种特殊数据类型,GEO地理位置,HyperLogLog,BitMap

    三种特殊数据类型,GEO地理位置,HyperLogLog,BitMap GEO地理位置 简介 Redis 的 GEO 特性在 Redis 3.2 版本中推出, 这个功能可以将用户给定的地理位置信息储存 ...

  3. redis的三种特殊数据类型

    三种特殊数据类型 GEO地理位置 简介 Redis 的 GEO 特性在 Redis 3.2 版本中推出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作.来实现诸如附近位置.摇一 ...

  4. 详解redis的三种特殊数据类型

    14天学习训练营导师课程: 郑为中<Vue和SpringBoot打造假日旅社管理系统> 努力是为了不平庸~ 学习有些时候是枯燥的,但收获的快乐是加倍的,欢迎记录下你的那些努力时刻(学习知识 ...

  5. 第124天学习打卡(Redis Set Hash Zset 三种特殊数据类型 事务 乐观锁)

    Set(集合) set中的值不能重复 set是无序的且不重复 127.0.0.1:6379> sadd myset "hello" # set集合中添加值 (integer) ...

  6. Redis三种特殊数据类型

    Redis三种特殊数据类型 geospatial 地理位置 朋友的定位, 附近的人, 打车的距离计算 Redis的Geo在Redis3.2版本就推出了.这个功能可以推算地理位置信息, 两地之间的距离, ...

  7. redis 三种特殊数据类型

    三种特性数据类型 geospatial 定位,附近的人,打车距离计算. redis的geo在redis3.2版本就推出了.可推算地理位置的信息,两地之间的距离,方圆几里的人. 6个命令. GEOADD ...

  8. Redis(三)【五大数据类型三种特殊数据类型】

    目录 三. 五大数据类型 Redis-Key String(字符串) List(列表) Set(集合) Hash(哈希) Zset(有序集合) 6. 三种特殊数据类型 geospatial 地理位置 ...

  9. Redis(测试连接, 五大数据类型,三种特殊数据类型)

    文章目录 测试性能 测试端口: 测试: 基础知识 总共有16个数据库,默认是0号数据库 数据库切换: 清空数据: redis是单线程的 redis为什么是单线程还运行如此快? 五大数据类型 Redis ...

  10. Redis中五大基本数据类型和三种特殊数据类型详解

    目录 介绍 概念 基本命令 redis是单线程的 五大基本数据类型 String 命令 应用场景 List 命令 应用场景 Set 命令 应用场景 Hash 命令 应用场景 Zset 命令 应用场景 ...

最新文章

  1. Onpaint和OnDraw的区别
  2. 第六章 Windows应用程序对键盘与鼠标的响应
  3. ASP.NET Web API 安全筛选器
  4. 开源内容管理系统 Joomla 数据遭泄露
  5. RHEL 7.0系统安装配置图解教程
  6. 防火墙配置十大任务之五,有NAT的两个接口的配置
  7. Unity3D TextMeshPro
  8. java 16进制与汉字_Java汉字与16进制数相互转换
  9. 视频倍速插件(火狐,谷歌)
  10. 解决导入maven工程时cannot resolve依赖问题
  11. 三年程序员生涯的感悟、总结和憧憬
  12. 经历三家千人互联网公司,提炼了20+条黄金法则
  13. [51单片机]按键部分(软件消抖)
  14. QT程序设置界面显示风格
  15. UG/NX二次开发Siemens官方NXOPEN实例解析—1.6 BlockStyler/SelectionExample
  16. 机器人工程就业面如何前景是否广阔
  17. 什么是IP封锁, 如何解封?
  18. centos7代理设置
  19. 我们是如何测试360手机浏览器的 –360手机浏览器测试范围概述
  20. 动态磁盘和基本磁盘的区别

热门文章

  1. 区块链的可视化:hash,block,blockchain,distributed,tokens,coinbase
  2. Rust: Vec用法及其它
  3. 一款云迁移产品的成长史
  4. C语言函数传入字母参数,c语言详细讲解函数参数作为数组传递的几种方式
  5. 【数字信号调制】基于matlab GUI数字信号调制系统【含Matlab源码 258期】
  6. 【图像去噪】基于matlab改进非局部均值红外图像混合噪声【含Matlab源码 1640期】
  7. 【优化覆盖】基于matlab移动网格求解无线传感器网络节点覆盖优化问题【含Matlab源码 1300期】
  8. 【优化求解】基于matlab遗传算法求解函数极值问题【含Matlab源码 1198期】
  9. 【数字信号】基于matlab 8级m序列【含Matlab源码 353期】
  10. 【股价预测】基于matlab BP神经网络股票价格预测【含Matlab源码 345期】