redis 三种特殊数据类型
三种特性数据类型
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 三种特殊数据类型相关推荐
- Redis三种特殊数据类型
Redis三种特殊数据类型 geospatial 地理位置 朋友的定位, 附近的人, 打车的距离计算 Redis的Geo在Redis3.2版本就推出了.这个功能可以推算地理位置信息, 两地之间的距离, ...
- Redis三种特殊数据类型——Geospatial地理空间
Redis三种特殊数据类型:bitmaps位图.hyperloglog基数统计 和 geospatial 地理空间 一.介绍 Redis GEO 用于存储地理位置信息,并对存储的信息进行操作,该功能在 ...
- Redis三种特殊数据类型(Geospatial地理位置详解,Hyperloglog基数统计,Bitmap位图场景详解)
学习总结,转自[狂神说Java]Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili 1.Geospatial 地理位置 Geospatial : 使用场景 :朋友的定位,方圆几公里得人(附 ...
- Redis中三种特殊数据类型
本文来说下Redis中三种特殊数据类型 文章目录 Gerspatial地理位置 Hyperloglog基数统计 Bitmap位图 Gerspatial地理位置 一共 6 个命令: GEOADD GEO ...
- redis的三种特殊数据类型
三种特殊数据类型 GEO地理位置 简介 Redis 的 GEO 特性在 Redis 3.2 版本中推出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作.来实现诸如附近位置.摇一 ...
- Redis(三)【五大数据类型三种特殊数据类型】
目录 三. 五大数据类型 Redis-Key String(字符串) List(列表) Set(集合) Hash(哈希) Zset(有序集合) 6. 三种特殊数据类型 geospatial 地理位置 ...
- Redis(测试连接, 五大数据类型,三种特殊数据类型)
文章目录 测试性能 测试端口: 测试: 基础知识 总共有16个数据库,默认是0号数据库 数据库切换: 清空数据: redis是单线程的 redis为什么是单线程还运行如此快? 五大数据类型 Redis ...
- redis学习--三种特殊数据类型,GEO地理位置,HyperLogLog,BitMap
三种特殊数据类型,GEO地理位置,HyperLogLog,BitMap GEO地理位置 简介 Redis 的 GEO 特性在 Redis 3.2 版本中推出, 这个功能可以将用户给定的地理位置信息储存 ...
- Redis中五大基本数据类型和三种特殊数据类型详解
目录 介绍 概念 基本命令 redis是单线程的 五大基本数据类型 String 命令 应用场景 List 命令 应用场景 Set 命令 应用场景 Hash 命令 应用场景 Zset 命令 应用场景 ...
最新文章
- 这几天在搞UNITY3D,感觉回到了AS2
- 【试验】三个用于日常监控开发库与对应测试库的存储过程
- WEB接口测试之Jmeter接口测试自动化 (二)(数据分离)
- android中图型的阴影效果(shadow-effect-with-custom-shapes)
- mysql8報錯解決方案彙總(持續更新中)
- Beta冲刺博客集合贴
- c语言一元二次方程 ii(分支嵌套),C程序设计——求一元二次方程算法
- 为特使建立控制平面的指南-部署权衡
- php设置html全局路径_PHPCMS V9 URL去掉或修改/html路径的方法
- 常用的一些页面操作 js jsp check
- generatorConfig 指定列的java数据类型
- a标签的href和onclick的区别
- JiBX 入门级使用
- HTTP利用API接口,解密生意参谋
- 百数巡检领域系统能力展示
- FastDFS安装步骤
- 【AE】2 ICommand和ITool
- (项目名).exe”。已加载符号。 无法查找或打开 PDB 文件。
- pands 画图 调整大小_图片处理小技巧(调整大小、批量命名),超级实用
- ubuntu18.04装coturn