2.1 geospatial 地理位置
geospatial 地理位置 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人
geoadd [key] [经度] [维度] [地点名称] 添加位置
注意经纬度不可以超过取值范围 ,否则会报错
geopos [key] [value] 查询value的经纬度
geodist [key] [pos1] [pos2] 查询pos1和pos2之间的直线距离,默认距离是米,可以改成km,mi,ft
georadius 以给定的经纬度为中心,找出某一半径以内的元素
georadius [key] [longitude] [latitude]
[radius] [m/km/ft/mi] [withcoord 可选] [withdist可选] [count 数字 可选] [asc/desc可选]
以某个经度纬度为中心,查找radius范围内的元素,同时输出坐标、显示到中心的直线距离,筛选出几个结果,升序或者降序
georadiusbymember [key] [member] [radius]
[m/km/ft/mi] [withcoord 可选] [withdist可选] [count 数字 可选] [asc/desc可选]
以某个指定元素为中心,查找radius范围内的元素,同时输出坐标、显示到中心的直线距离,筛选出几个结果,升序或者降序
geohash 返回一个或多个位置元素的11个字符的Geohash字符串
geohash [key] [member]
geo的底层实现原理就是zset!我们可以使用zset命令来操作geo
zrange 查看地图中全部的元素
zrem 移除地图中的某个元素
2.2 hyperloglog基数统计
hyperloglog 如果允许容错,就使用该方法。不允许容错就使用set
什么是基数?A{1,3,5,7,8,7} B{1,3,5,7,8} 基数(表示不重复的元素)=5,可以接受误差
hyperloglog 基数统计的算法
优点:占用的内存是固定的,只要12KB内存,如果从内存角度来比较的话,首选hyperloglog
网页UV(一个人访问一个网站多次,但是还是算作一个人)
传统的方式,用set保存用户id,然后就可以统计set中的元素数量作为评判标准
这个方式如果保存大量的用户id,就会比较麻烦,我们的目的是为了计数,不是保存用户id
0.81的错误率,统计UV任务,可以忽略不计
pfadd [key] [element....]创建元素
pfcount [key] 统计元素的基数数量
pfmerge [destination] [src1] [src2].. 合并数据1,数据2 到目的数组中
2.3 bitmap位存储
统计用户信息,活跃/不活跃, 打卡/未打卡,等等两个状态的
bitmap是位图,数据结构,都是操作二进制位进行记录的,就只有0 和 1 两个状态
365天 = 365bit 1Byte
= 8bit 46个字节左右
setbit [key] [offset] [0/1] 设置某个元素为0/1
getbit [key] [name] 获取某个元素的值
bitcount [key] [start] [end] 获取某个区间为1的个数,不包括start 和 end 在内