三种特性数据类型

geospatial

定位,附近的人,打车距离计算。

redis的geo在redis3.2版本就推出了。可推算地理位置的信息,两地之间的距离,方圆几里的人。

6个命令。

GEOADD
GEODIST
GEOHASH
GEOPOS
GEORADIUS
GEORADIUSBYMEMBERhttps://redis.io/commands/geoadd
# geoadd china:city 经度 纬度 城市
# 可通过程序将信息读取到redis中..geoadd china 116.40 39.90 beijing
geoadd china:city 121.47 31.23 shanghai
geoadd china:city 120.16 30.24 hangzhou# geopos 获取城市所在的经纬度
getpos china:city beijing
getpos china:city hangzhou beijing # geodist 获取两个位置之间的距离
# m 米, km 千米, mi 英里, ft 英尺geodist china:city beijing shanghai km
geodist china:city beijing hangzhou km# 需求:我附近的人?通过半径来查询。
# 获取指定数量的人。
# georaduis 以给定的经纬度为中心,找出某一半径内的元素
georadius china:city 110 30 1000 km # 当前经度110,维度30 获取半径1000km的城市georadius china:city 110 30 500 km withdis # 获取到城市,距离georadius china:city 110 30 500 km withcoord # 获取到城市,经纬度georadius china:city 110 30 500 kim withdis withcoord count 1 # 获取500千米内一个城市,经纬度,距离,# georadiusBymember 根据某个城市找到附近的城市
georadiusbymember china:city beijing 1000km # 找出北京附近1000km的城市# geohash 返回一个或者多个位置元素的geohash表示
# 返回11个字符的geohash字符串
geohash china:city bejing shanghai# geo的底层实现原理就是zset,可以使用zset来操作geo
# 具体见zset操作有序集合,127.0.0.1:6379[1]> zrem china:city hangzhou
(integer) 1
127.0.0.1:6379[1]> zrange china:city 0 -1
1) "shanghai"
2) "beijing"

hyperloglogs

2.8.9 hyperloglog 数据结构
redis hyperloglog 基数统计的算法 (不重复)
优点:占用内存是固定的。2^64不同的元素的基数,只需要12kb内存。
网页的uv(一个人访问一个网站多次,但是还是算作一个人。)传统的方式,set保存用户的id,然后就可以统计set中的元素数量作为标准判断。
set的确定,用户id太长,太多。是为了计数。
测试使用
# 一组数
pfadd mykey a b c d e f g h i j
# 获取不重复长度
pfcount mykey
# new
pfadd mykey2 i j z x c v b n m
# get len
pfcount mykey2
# 合成新的key
pfmerge mykey 3 mykey my key2
# 两组key的合并后不重复字符的长度
pfcount mykey3# demo# 第一组数
127.0.0.1:6379[1]> pfadd key1 a b c d e f g
(integer) 1
127.0.0.1:6379[1]> pfcount key1
(integer) 7
# 第二组数
127.0.0.1:6379[1]> pfadd key2 e f g h i j k
(integer) 1
127.0.0.1:6379[1]> pfcount key2
(integer) 7
# 合成一组基数
127.0.0.1:6379[1]> pfmerge key3 key1 key2
OK
127.0.0.1:6379[1]> pfcount key3
(integer) 11

如果允许容错,可使用hyperloglog来进行网站访问统计。

不容错,使用set,或者自定义。

bitmap

# 位存储
# 统计疫情的感染人数 01 01
# 统计用户信息 活跃,不活跃。登录,未登录。打卡。两个状态的都可使用bitMaps.
# 位图,也是一种数据库的。都是操作二进制位来进行记录。就只有0和1两个状态。# setbit sign offset value 设置值
# getbit sign offset   获取值
# bitcount sign (start, end) 统计值为1的# 打开demo,假设已经打开的为1,位打开的为0# 设置周一到周天打开信息 0未打开,1已经打开
127.0.0.1:6379[1]> setbit sign 0 1
(integer) 0
127.0.0.1:6379[1]> setbit sign 1 0
(integer) 0
127.0.0.1:6379[1]> setbit sign 2 0
(integer) 0
127.0.0.1:6379[1]> setbit sign 3 1
(integer) 0
127.0.0.1:6379[1]> setbit sign 4 1
(integer) 0
127.0.0.1:6379[1]> setbit sign 5 0
(integer) 0
127.0.0.1:6379[1]> setbit sign 6 1
(integer) 0
# 获取打开信息 周六
127.0.0.1:6379[1]> getbit sign 5
(integer) 0
# 获取打卡信息 周末
127.0.0.1:6379[1]> getbit sign 6
(integer) 1
# 统计打卡的数量1
127.0.0.1:6379[1]> bitcount sign
(integer) 4
127.0.0.1:6379[1]> bitcount sign 0 6
(integer) 4

redis 三种特殊数据类型相关推荐

  1. Redis三种特殊数据类型

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

  2. Redis三种特殊数据类型——Geospatial地理空间

    Redis三种特殊数据类型:bitmaps位图.hyperloglog基数统计 和 geospatial 地理空间 一.介绍 Redis GEO 用于存储地理位置信息,并对存储的信息进行操作,该功能在 ...

  3. Redis三种特殊数据类型(Geospatial地理位置详解,Hyperloglog基数统计,Bitmap位图场景详解)

    学习总结,转自[狂神说Java]Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili 1.Geospatial 地理位置 Geospatial : 使用场景 :朋友的定位,方圆几公里得人(附 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 这几天在搞UNITY3D,感觉回到了AS2
  2. 【试验】三个用于日常监控开发库与对应测试库的存储过程
  3. WEB接口测试之Jmeter接口测试自动化 (二)(数据分离)
  4. android中图型的阴影效果(shadow-effect-with-custom-shapes)
  5. mysql8報錯解決方案彙總(持續更新中)
  6. Beta冲刺博客集合贴
  7. c语言一元二次方程 ii(分支嵌套),C程序设计——求一元二次方程算法
  8. 为特使建立控制平面的指南-部署权衡
  9. php设置html全局路径_PHPCMS V9 URL去掉或修改/html路径的方法
  10. 常用的一些页面操作 js jsp check
  11. generatorConfig 指定列的java数据类型
  12. a标签的href和onclick的区别
  13. JiBX 入门级使用
  14. HTTP利用API接口,解密生意参谋
  15. 百数巡检领域系统能力展示
  16. FastDFS安装步骤
  17. 【AE】2 ICommand和ITool
  18. (项目名).exe”。已加载符号。 无法查找或打开 PDB 文件。
  19. pands 画图 调整大小_图片处理小技巧(调整大小、批量命名),超级实用
  20. ubuntu18.04装coturn

热门文章

  1. spring mvc学习(54):简单异常处理
  2. spring mvc学习(31):原生api
  3. 玩转oracle 11g(2):创建数据库
  4. 实例2:python
  5. Qt QInputDialog文本输入对话框示例
  6. 大学计算机基础实训excel,大学计算机基础实训指导书
  7. http get 消息的作用是什么?_http基础知识
  8. 李宏毅机器学习课程---2、Regression - Case Study
  9. web前端开发怎么样学习?看这份web前端学习路线
  10. volatile理解了吗?