redis学习(2)----geospatial、Hyperloglog、Bitmaps

Redis三种特殊数据类型

1、geospatial地理位置

该功能可以推算地理位置信息,两地之间的距离
只有6个命令:

GEOADD
 添加地理位置,可通过java直接导入!
 参数 key 值(经度 纬度 名称)
  
geoadd china:city 116.40 39.90 beijin
geoadd china:city 121.47 31.23 shanghai
geoadd china:city 160.50 29.53 chongqing 114.05 22.52 shenzhen
geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian
GEOPOS

获取指定城市的经度和纬度

geopos china:city beijin
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
GEODIST

获取两个目标间的距离
单位: m km mi ft

GEODIST china:city beijin shanghai km
"1067.3788"
GEORADIUS
GEORADIUS china:city 110 30 500 km           以110 30为经纬度查询,方圆500km的目标
1) "xian"
GEORADIUS china:city 110 30 500 km withdist  距离
1) 1) "xian"
   2) "483.8340"
GEORADIUS china:city 110 30 500 km withcoord 经纬度
1) 1) "xian"
   2) 1) "108.96000176668167114"
      2) "34.25999964418929977"
GEORADIUS china:city 110 30 500 km withcoord withdist count 3
查出距离、经纬度、限定三个最近的目标
GEOHASH

返回一个或多个位置元素
将二位的经纬度转化为一维的字符串

GEOHASH china:city beijin xian
1) "wx4fbxxfke0"
2) "wqj6zky6bn0"
GEORADIUSBYMEMBER

找出位于指定元素周围的其他元素
城市之间的定位

GEORADIUSBYMEMBER china:city beijin 1000 km withcoord withdist
1) 1) "beijin"
   2) "0.0000"
   3) 1) "116.39999896287918091"
      2) "39.90000009167092543"
2) 1) "xian"
   2) "910.0565"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"

底层原理

底层实现原理为Zset可以使用Zset

zrange china:city 0 -1          查看所有元素
1) "xian"
2) "shenzhen"
3) "hangzhou"
4) "shanghai"
5) "beijin"
6) "chongqing"
可以使用 zrem china:city beijin  去消除定位信息

2、Hyperloglog

基数:不重复的元素;基数统计算法
优点:占用内存固定
可应用于网页的UV(单人访问多次仍为单人)

pfadd mykey a b c d e f g             创建第一组元素
pccount mykey                         统计mykey元素的基数数量
pfmerge mykey3(目的set) mykey mykey2  合并两组mykey和mykey2 => mykey3 并集

允许容错可以使用,不允许–>set

3、Bitmaps

位存储==>统计用户信息,活跃、不活跃、登录、未登录、打卡, 365打卡

setbit key offset value  offset==>目标的地址
setbit a 0 1  ==>存入bitmaps
getbit a 0    ==>查看0地址上有没有至1
bitcount a    ==>查看key中至1总数

你可能感兴趣的:(redis学习,redis)