• Redis三种特殊数据类型


    三种特殊数据类型

    geospatial 地理位置

    朋友的定位,附近的人,打车距离计算。

    Redis的Geo

    可以查询一些测试数据 http://www.jsons.cn/lngcode/

    可以推算地理位置之间的信息,两地之间的距离,周围的人

    参数:key 值(经度、纬度,名称)

    geoadd 添加地理位置 geoadd china:city 116.40 39.90 beijing

    规则: 两极无法直接添加,一般会下载城市数据,通过java程序一次性导入

    geopos 获取指定城市的经纬度 geopos china:city beijing

    geodist 返回两个给定位置之间的距离 geodist china:city beijing chongqing km

    我附近的人? (获得所有附近的人的定位)一般通过半径查询

    georadius georadius china:city 110 30 500 km [withdist withcoord count 1]

    ​ 以100,30经纬度为中心,寻找方圆500km的城市,withdist 显示距离 withcoord显示坐标 count 限制数量

    georadiusbymember 找出指定元素周围的其他元素

    GEORADIUSBYMEMBER china:city beijing 1000 km
    

    geohash 返回一个或多个位置元素的geohash表示

    ​ 将二维坐标转换为一维字符串 ,两个字符串越接近,距离越近

    geo底层实现

    ​ 底层其实就是Zset,可以使用Zset命令来操作geo

    ​ zrange china:city 0 -1

    ​ zrem china:city xian

    Hyperloglog

    什么是基数?

    基数就是集合中不重复的元素

    Redis Hyperloglog基数统计的算法

    优点:

    占用内存固定,2^64不同的元素的技术,只需要花费12kb内存,如果从内存角度比较的话,Hyperloglog是首选,0.81%错误率!统计UV,是可以接受的

    网页的UV(一个人访问一个网站多次。还是算作一个人)

    传统的方式:set保存用户id,然后可以统计set中的元素数量作为标准

    这个方式如果保存大量的用户id,就会比较麻烦!我们的目的是为了计数,而不是保存用户id

    pfadd 创建一组元素

    pfcount 统计基数数量

    pfmerge 合并两组,可以查看并集的基数数量

    如果允许容错,那么就使用pf,如果不允许容错,就只有使用set或者自己的数据类型

    Bitmap

    位存储

    Bitmap位图,数据结构!都是操作二进制位来进行记录,就只有0和1两个状态

    setbit 设置位数据

    getbit 获取位数据

    bitcount 获取1的个数

  • 相关阅读:
    Arrays.asList的使用
    php之sql语句 创建数据库、表、插入字段,自动判断是否成功
    初识 canvas 绘图
    自定义音频audio播放器
    我的晨练
    js获取屏幕或可视范围
    js 查看脚本运行时间的办法
    a:hover伪类在ios移动端浏览器内触发无法取消
    js模拟用户触摸事件
    持续健身带来的变化
  • 原文地址:https://www.cnblogs.com/dwwzone/p/13154169.html
Copyright © 2020-2023  润新知