• 2022/08/26 day11:高级数据类型


    目录

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ArNRU855-1661511399706)(en-resource://database/5321:1)]

    Bitmaps

    公司的年度总结会

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yu2Eq0GV-1661511399707)(en-resource://database/5323:1)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1p53WPj-1661511399708)(en-resource://database/5325:1)]

    存储需求

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y0wbBbas-1661511399708)(en-resource://database/5327:1)]

    Bitmaps类型的基础操作

    • 获取指定key对应偏移量上的bit值

      • getbit key offset
    • 设置指定key对应偏移量上的bit值,value只能是1或0

      • setbit key offset value
    • 演示

      • setbit bits 0 1
      • getbit bits 0

    Bitmaps类型的扩展操作

    业务场景

    电影网站

    • 统计每天某一部电影是否被点播
    • 统计每天有多少部电影被点播
    • 统计每周/月/年有多少部电影被点播
    • 统计年度那部电影没有被点播

    业务分析
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UM94Ar6t-1661511399708)(en-resource://database/5329:1)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gUFd0qCP-1661511399708)(en-resource://database/5331:1)]

    • 对指定key按位进行交、并、非、异或操作,并将结果保存到destKey中

      • bitop op destKey key1 [key2…]
        • and:交
        • or:并
        • not:非
        • xor:异或
    • 统计指定key中1的数量

      • bitcount key [start end]
    • 演示

      • 设置初始值
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8OxLbUy3-1661511399709)(en-resource://database/5333:1)]
      • 统计key中为1的
        • bitcount 20880808
      • 这两天所有电影的浏览记录
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIWngwJN-1661511399709)(en-resource://database/5335:1)]

    tips 21:
    redis应用于信息状态统计

    HyperLogLog

    统计独立UV
    统计不重复数据的数量

    • 原始方案:set
      • 存储每个用户的id(字符串)
    • 改进方案Bitmaps
    • 全新的方案:HyperLogLog

    基数

    • 基数就是数据集去重后元素的个数
    • HyperLogLog是用来做基数统计的,运用LogLog的算法
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HGwf61Rz-1661511399709)(en-resource://database/5337:1)]

    LogLog算法
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YaEeWCSz-1661511399710)(en-resource://database/5341:1)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7Ck8bEF-1661511399710)(en-resource://database/5343:1)]

    HyperLogLog类型的基本操作

    • 添加数据

      • pfadd key element [element …]
    • 统计数据

      • pfcount key [key …]
    • 合并数据

      • pfmerge destkey sourcekey [sourcekey …]
    • 演示

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUHYSWJe-1661511399710)(en-resource://database/5345:1)]

    tips:
    redis应用于独立信息统计

    相关说明

    • 用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据
    • 核心是基数估算算法,最终数值存在一定误差
    • 误差范围:基数估计的结果是一个带有0.81%标准错误的近似值
    • 耗空间极小,每个HyperLogLog key 占用了12K的内存用于标记基数
    • pfadd命令不是一次性分配12K内存使用,会随着基数的增加内存逐渐增大
    • Pfmerge命令合并后占用的存储空间为12K,无论合并之前数据量是多少

    GEO

    火热的生活服务类软件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ziMyxQb-1661511399711)(en-resource://database/5347:1)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yapHHzRh-1661511399711)(en-resource://database/5349:1)]

    GEO类型的基本操作

    • 添加坐标点

      • geoadd key longitude latitude member [longtude latitude member …]
    • 获取坐标点

      • geopos key member [member …]
    • 计算坐标点距离

      • geodist key member1 member2 [unit]
    • 演示

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a5jVqOHV-1661511399711)(en-resource://database/5351:1)]
    • 根据坐标求范围内的数据

      • georadius key longitude latitude radius m | km | ft | mi [withcoord] [withdist] [withhash] [count count]
    • 根据点求范围内的数据

      • georadiusbymember key member radius m | km | ft | mi [withcoord] [withdist] [withhash] [count count]
    • 获取指定点对应的坐标hash值

      • geohash key member [member …]
    • 演示

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zwaKZpGL-1661511399711)(en-resource://database/5353:1)]
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EEwgkKJL-1661511399711)(en-resource://database/5355:1)]

    tips 23:
    redis应用于地理位置计算

    总结

    在这里插入图片描述

                                                                                     ——此文档为学习笔记!
    
    • 1
  • 相关阅读:
    硬件设计——串联直流稳压电源
    Spring全局异常处理
    免疫检查点 PD-1 与中枢神经系统(CNS)的生理学关系 | MedChemExpress
    JDK内置命令工具
    Java并发编程--多线程间的同步控制和通信
    “购物返现积分兑换”——区块链思维的购物返利方式
    C# json序列化实体时,时间戳转Datetime
    SpringCloud Feign异步调用传参问题
    laravel Modify data is invalid 解决修改数据无效
    java判断对象是否还在被引用
  • 原文地址:https://blog.csdn.net/w2079930908/article/details/126548916