• Redis高级数据类型


    Bitmaps:Redis应用于信息状态统计

    如果仅仅存储一个状态(Y/N,1/0),可以用二进制位存,用编号/id(范围/max较小最好)作为位置

    设置值setbit bits 位置 值

    获取值getbit bits 位置

    扩展操作

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

    bitop op destKey key1 [key2...]

    and:交  or:并  not:非  xor:异或

    统计指定key中1的数量

    bitcount key [start end]

    业务场景 

    电影网站:统计每天某一部电影是否被点播;统计每天有多少部电影被点播;统计每周/月/年有多少部电影被点播;统计年度哪部电影没有被点播

     

    HyperLogLog:统计不重复数据的数量  Redis应用于独立信息统计

    基数统计,基数集合(去重后的集合)

    基数是数据集去重后元素个数,HyperLogLog是用来做基数统计的,运用了LogLog的算法

    HyperLogLog基本操作

    添加数据  pfadd  key  element  [element...]

    统计数据  pfcount  key  [key...]

    合并数据  pfmerge destkey  sourcekey  [sourcekey...]

    说明:用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据

    核心是基数估算算法,最终数值存在一定误差

    误差范围:基数估计的结果是一个带有0.81%标准错误的近似值

    耗空间极小,每个hyperloglog key占用了12K的内存用于标记基数

    pfadd命令不是一次性分配12K内存使用,会随着基数的增加内存逐渐增大

    pfmerge命令合并后占用的存储空间为12K,无论合并之前数据量多少

    GEO  Redis用于记录地理位置信息

    微信/陌陌  附近的人

    美团/饿了吗

    携程/马蜂窝

    高德/百度      只要和线下有关,位置类的东西

    基本操作:key是GEO对象名

    添加坐标点  geoadd  key  longitude  latitude  member  [longitude  latitude  member...]

    获取坐标点  geopos  key  member  [member ...]

    计算坐标点距离  geodist  key  member1 member2 [unit]  -->只算水平位置  默认单位是m-->unit

    根据坐标求范围内的数据  georadius  key  longitude  latitude  radius  

    根据点求范围内数据  georadiusbymember  key  member  radius

    获取指定点对应的坐标hash值  geohash  key  member

  • 相关阅读:
    【设计模式】责任者模式
    【Java工具方法】给集合按数量分组
    【Spring】非Spring IOC容器下获取Spring IOC上下文的环境
    【Java】模板方法模式
    【RabbitMQ】CentOS安装RabbitMQ,及简单的Java客户端连接
    【RabbitMQ】RabbitMQ的一些基础概念
    【Spring】简单的Spring AOP注解示例
    【Web】URI和URL,及URL的编码
    【加密】对称加密算法
    【Normal Form】数据库表结构设计所遵从的范式
  • 原文地址:https://www.cnblogs.com/liushoudong/p/12682887.html
Copyright © 2020-2023  润新知