数据库
首页 > 数据库> > 80.redis:三种特殊数据类型:Geospatial,Hyperloglog,Bitmaps

80.redis:三种特殊数据类型:Geospatial,Hyperloglog,Bitmaps

作者:互联网

目录

一、geospatial:地理位置

(1)添加地理位置:geoadd

(2)查询某个值的地理位置:geopos

(3)返回两个地址之间的距离:geodist

(4)某个经纬度为中心,一个范围内查找:georadius

(5)以某个城市为中心,一个范围内查找:georadiusbymember

(6)将经纬度转换成一个字符串返回:geohash

(7)删除一个经纬度:zrem

二、Hyperloglog:统计基数

(1)新增一个统计列表:pfadd

(2)查看统计列表数量:pfcount

(3)合并两个统计列表:pfmerge

三、Bitmaps:统计状态

(1)设置是否登录:setbit

(2)查看某一天是否登录:getbit

(3)统计登录的天数:bitcount


一、geospatial:地理位置

geo底层用的其实还是zset,而且geo不提供删除方法,如果真的要删除,通过zset来删除

(1)添加地理位置:geoadd

注:两级无法直接添加,一般是下载城市数据,然后java批量导入

#前面是经线,后面是纬线,顺序不能反了
geoadd 键 东经 北纬 值

(2)查询某个值的地理位置:geopos

geopos 键 值

(3)返回两个地址之间的距离:geodist

#两个地址之间距离(默认单位m)
geodist 键 值1 值2 

#两个地址之间距离(单位km)
geodist 键 值1 值2 km

(4)某个经纬度为中心,一个范围内查找:georadius

#单位可用m,km
georadius 键 东经 北纬 距离 单位

#withdist:显示距离
#withcoord:显示纬度
#count 数量:显示几条数据
georadius 键 东经 北纬 距离 单位 withdist withcoord count 数量

(5)以某个城市为中心,一个范围内查找:georadiusbymember

georadiusbymember 键 值 距离 单位

(6)将经纬度转换成一个字符串返回:geohash

geohash 键 值1 值2 ...

(7)删除一个经纬度:zrem

zrem 键 值

 

二、Hyperloglog:统计基数

基数:不重复的元素,可接受一定的误差。

使用场景:统计一个网站每天多少人登录。注:一个人多次登录算一次。

(1)新增一个统计列表:pfadd

注:新增多个有一样的值时,按一个统计

pfadd 键 值1 值2

(2)查看统计列表数量:pfcount

pfcount 键

(3)合并两个统计列表:pfmerge

pfmerge 新建 旧键1 旧键2

 

三、Bitmaps:统计状态

使用场景:对于只有两个状态的用户信息的统计。比如是否登录,是否打卡,是否签到等。

我们以是否登录为例:

(1)设置是否登录:setbit

setbit 键 天数 是否登录

(2)查看某一天是否登录:getbit

(3)统计登录的天数:bitcount

bitcount 键

 

标签:Hyperloglog,经纬度,地理位置,数据类型,redis,距离,列表,登录,统计
来源: https://blog.csdn.net/qq_40594696/article/details/115207037