• redis中setbit bitcount命令详解


    bitmap,位图,即是使用bit。 redis字符串是一个字节序列。

    1 Byte = 8 bit

     

    SETBIT key offset value

    设置或者清空key的value(字符串)在offset处的bit值。

    那个位置的bit要么被设置,要么被清空,这个由value(只能是0或者1)来决定。当key不存在的时候,就创建一个新的字符串value。要确保这个字符串大到在offset处有bit值。

    offset 表示bit的位置数,从0开始计,1字节的bit数组最大为7 。

    SETBIT K1 1 1   :第1位上设置为1,即01000000。 按ASCII码表 对应@。   --》GET K1    --》@

    SETBIT K1 7 1  :第7位设为1,即01000001。 按ASCII码表 对应A   --》GET K1    --》A

    --》STRLEN K1  --》1

    SETBIT K1 9 1 : 第9位设为1。超出分1字节连接。即01000001 01000000 。分字节来按ASCII码表 对应 A@  --》 GET K1   --》A@

    --》STRLEN K1    --》2

    SETBIT K1 26 1 : 第26位设为1。超出分1字节连接。即01000001 01000000  00000000 00100000。

    分字节来按ASCII码表   00000000对应(空字符)十六进0x00 ;00100000 对应空格

      --》 GET K1      --》"A@x00 "

    --》STRLEN K1   --》4

    SETBIT K1 31 1 : 第32位设为1。超出分1字节连接。即01000001 01000000  00000000 00100001。

    分字节来按ASCII码表  十六进0x00 ;00100001 对应!

      --》 GET K1      --》"A@x00!"

    --》STRLEN K1   --》4

    BITCOUNT key [start end]

    统计字符串被设置为1的bit数.

    一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。

    start 和 end 参数的设置,都可以使用负数值:比如 -1 表示最后一个位,而 -2 表示倒数第二个位,

    start、end 是指bit组的字节的下标数,二者皆包含。

    如上 K1 【01000001 01000000  00000000 00100001】,对应【0,1,2,3】

    bitcount K1 1 2  : 统计下标1、2字节组中bit=1的个数,即01000000  00000000

    --》bitcount K1 1 2   --》1

    bitcount K1 1 3  : 统计下标1、2字节组中bit=1的个数,即01000000  00000000 00100001
    --》bitcount K1 1 3  --》3

    bitcount K1 0 -2  : 统计下标0到下标倒数第2,字节组中bit=1的个数,即01000001 01000000  00000000
    --》bitcount K1 0 -2  --》3

     注意:redis的setbit设置或清除的是bit位置,而bitcount计算的是byte位置。

  • 相关阅读:
    Charles 环境安装
    postman的安装指南
    python-web自动化-三种等待方式(元素定位不到一)
    如何查找MySQL中查询慢的SQL语句
    1023 组个最小数
    linux学习笔记01
    P6461 [COCI2006-2007#5] TRIK
    P1181 数列分段Section I
    P4414 [COCI2006-2007#2] ABC
    如何安装oracle
  • 原文地址:https://www.cnblogs.com/song27/p/12329554.html
Copyright © 2020-2023  润新知