zoukankan      html  css  js  c++  java
  • Redis(三)位图

    1.目录

    • 什么是位图
    • 位图的作用
    • 基本使用

    2.什么是位图

    位图不是一个真实的数据类型,而是定义在字符串类型上的面向位的操作的集合。由于字符串类型是二进制安全的二进制大对象,并且最大长度是 512MB,适合于设置 2^32个不同的位。

    3.位图的作用

    在我们平时开发过程中,会有一些 bool 型数据需要存取,比如用户一年的签到 记录,签了是 1,没签是 0,要记录 365 天。如果使用普通的 key/value,每个 用户要记录 365 个,当用户上亿的时候,需要的存储空间是惊人的。

     为了解决这个问题,Redis 提供了位图数据结构,这样每天的签到记录只占据一 个位,365 天就是 365 个位,46 个字节 (一个稍长一点的字符串) 就可以完全容 纳下,这就大大节约了存储空间。

    4.基本使用

    1)零存零取

    127.0.0.1:6379> setbit w 1 1
      (integer) 0
    127.0.0.1:6379> getbit w 1
      (integer) 1

    2)整存零取

    127.0.0.1:6379> set w h  
      (integer) 0
      127.0.0.1:6379> getbit w 1
      (integer) 1
      127.0.0.1:6379> getbit w 2
      (integer) 1
      127.0.0.1:6379> getbit w 4
      (integer) 1
      127.0.0.1:6379> getbit w 5
      (integer) 0

    4.统计和查找

     Redis 提供了位图统计指令 bitcount 和位图查找指令 bitpos,bitcount 用来统 计指定位置范围内 1 的个数,bitpos 用来查找指定范围内出现的第一个 0 或 1。


     

     

     
  • 相关阅读:
    Linux系统操作问题汇总
    记录一些mysql数据库常用操作命令和问题汇总
    python学习之路-练习小程序02(模拟用户登录)
    python学习之路02(基础篇2)
    python学习之路-练习小程序01(猜年龄)
    python学习之路01(基础篇1)
    hashmap详解(基于jdk1.8)
    maven创建项目太慢怎么办
    CAS原理
    JUC原子类3-AtomicLongArray原子类
  • 原文地址:https://www.cnblogs.com/ql211lin/p/10444839.html
Copyright © 2011-2022 走看看