Geospatial
朋友的定位,附近的人,打车距离计算
底层是
Zset,即可以使用Zset的命令操作Geospatial
Redis3.2 开始支持的
1.添加地理位置
- 两极无法添加
- 经度:-180 ~ 180(度)
- 纬度:-85.05112878 ~ 85.05112878(度)
geoaddkey 经度 纬度 名称

2.获取指定位置的地理位置
geoposkey 名称

3.返回两个给定位置之间的距离(直线距离)
- 单位:
- m :米
- km :千米
- mi : 英里
- ft :英尺
geodistkey


4.以给定值为半径,以经度和维度为中心,查找
- 附近的人(获得所有附近的人的地址(开启定位))通过半径查询
georadiuskey 经度 纬度 半径 单位

5.以给定值为半径,以成员(城市名)为中心,查找
georadiusbymemberkey 成员名 半径 单位

6.返回一个或多个位置元素的geohash表示
- 如果两个字符串越相似,表示两个地方越近
geohashkey 成员1 成员2

Hyperloglog
基数统计的算法;
类似 Set 作用,但可以节省大量内存!!
- 优点
- 占用内存是固定的,2的64次方 个不同的元素的基数,只需要 12KB 的内存。(大数据情况下,有0.81%错误率)
基数:集合中元素的个数(先去重),如{1,2,2,3} 其基数为3(集合去重后为1,2,3 有3个元素)
网页的UV(一个人访问访问一个网站多次,但是还是算作一个人)
传统实现UV:Set保存用户的Id,然后统计 set 中的元素的数量作为标准判断(这种需要保存大量用户的ID,需要大量的内存占用)
Redis2.8.9 开始支持
1.测试
创建一组元素 :
pfaddkey ele1 ele2 ele3 …统计对应key的基数:
pfcountkey1 [key2 …] // 多个key 就是统计这些key并集的基数合并:
pfmergedestkey sourceKey1 sourceKey2 [sourceKey3 …]

Bitmaps
位存储,位图(操作二进制)
统计用户信息,活跃,不活跃!登录、未登录!打卡,365打卡!(只有两个状态的属性都可以使用!!)
1.案例:一周打卡记录
一周过去
setbitkey offset bit

查看单天打卡情况
getbitkey offset

统计所有打卡的天数
bitcountkey




















