zoukankan      html  css  js  c++  java
  • 02 redis 三种特殊的数据类型

    课程学习地址:
    https://www.bilibili.com/video/BV1S54y1R7SB?p=23
    中间手册地址:
    http://www.redis.cn/

    一. 地理空间(geospatial) 索引半径查询

    二.Hyperloglog


    什么是基数

    A{1,3,5,7,8,7}
    B{1,3,4,7,8}

    基数(不重复的元素)=5,可以接受误差!

    简介

    Redis2.8.9版本就更新了Heperloglog数据结构!
    Redis Hyperloglog 基数统计的算法
    优点:占用内在是固定的,2^64不同的元素的技术,只需要12kb内在!如果要从内在的角度来比较的话Hyperloglog首先!
    页面的UV(一个人访问网站多次,但还是算作一个人!)
    传统的方式,set保存用户的id,然后就可以统计set中元素数据作为标准判断!
    Heperloglog 0.81%错误率!统计UV任务,可以忽略不计的!

    测试使用

    127.0.0.1:6379> pfadd mykey a a b c d e f g h i  #添加第一组基数数量
    (integer) 1
    127.0.0.1:6379> pfcount mykey  #统计第一组基数数量,会自动去重
    (integer) 9
    127.0.0.1:6379> pfadd mykey j #继续添加
    (integer) 1
    127.0.0.1:6379> pfadd mykey2 i j z x c v b n m  
    (integer) 1
    127.0.0.1:6379> pfcount mykey2
    (integer) 9
    127.0.0.1:6379> pfmerge mykey3 mykey mykey2 #合并第二组两个基数集
    OK
    127.0.0.1:6379> pfcount mykey3 #统计基数
    (integer) 15
    127.0.0.1:6379> pfcount mykey  #统计基数
    (integer) 10
    127.0.0.1:6379> pfcount mykey2 #统计基数 
    (integer) 9
    
    

    统计基数,如果允许容错,那么一定可以使用Hyperloglog!
    如果不允许容错,就使用set或者自己的数据类型即可!


    三. Bitmaps

    位存储

    统计用户信息,活跃,不活跃!登录未登录!打卡,365打卡!两个状态的,都 可以使用Bitmaps!
    Bitmaps位图,数据结构都是操作二进制位来进行记录,就只有0和1两个状!
    365天 = 365bit 1字节 = 8bit 46个字节左右!

    测试

    使用bitmap来记录,周一到周日的打卡!(1代表已经签到了,0代码没有签到)!
    周一:1 周二:0 周三:0 周四:1 ......

    127.0.0.1:6379> setbit sign 0 1
    (integer) 0
    127.0.0.1:6379> setbit sign 1 1
    (integer) 0
    127.0.0.1:6379> setbit sign 2 0
    (integer) 0
    127.0.0.1:6379> setbit sign 3 1
    (integer) 0
    127.0.0.1:6379> setbit sign 4 1
    (integer) 0
    127.0.0.1:6379> setbit sign 5 0
    (integer) 0
    127.0.0.1:6379> setbit sign 6 1
    (integer) 0
    
    

    查看某一天是否有打卡!

    127.0.0.1:6379> getbit sign 3 #周四打卡了
    (integer) 1 
    127.0.0.1:6379> getbit sign 5 #周六没有打卡
    (integer) 0
    

    统计操作,统计打卡的天数!

    127.0.0.1:6379> bitcount sign #统计这周的打卡记录,就可以看到是否有全勤
    (integer) 5
    
  • 相关阅读:
    Consul 简介及集群安装
    poj 1300 Door Man 欧拉回路
    Codeforces Round #284 (Div. 2)
    bnuoj 34985 Elegant String DP+矩阵快速幂
    cf 496B Secret Combination
    hdu 5120 Intersection
    poj 2002 Squares
    Codeforces Round #281 (Div. 2)
    转载:百度原CTO李一男经典语录
    hdu 4005 The war
  • 原文地址:https://www.cnblogs.com/haima/p/13763421.html
Copyright © 2011-2022 走看看