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码表 对应 [email protected]  --》 GET K1   --》[email protected]

--》STRLEN K1    --》2

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

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

--》 GET K1      --》"[email protected]\x00 "

--》STRLEN K1   --》4

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

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

--》 GET K1      --》"[email protected]\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

原文地址:https://www.cnblogs.com/song27/p/12329554.html

时间: 2024-08-02 01:31:30

redis中setbit bitcount命令详解的相关文章

WPF中的Command命令详解

在WPF中使用命令的步骤很简单 1.创建命令 2.绑定命令 3.设置命令源 4.设置命令目标 WPF中命令的核心是System.Windows.Input.ICommand接口,所有命令对象都实现了此接口.当创建自己的命令时,不能直接实现ICommand接口,而是要使用System.Windows.Input.RouteCommand类,该类已经实现了ICommand接口,所有WPF命令都是RouteCommand类的实例.在程序中处理的大部分命令不是RoutedCommand对象,而是Rout

redis中的RDB持久化详解

1. 如何在redis中配置RDB持久化文件 在redis持久化中  默认是开启RDB模式的.这里我们只需要对RDB进行配置即可 在上面有三个配置选项 分别是 每隔900秒  有一条key进行变更 每个300秒 有10条key进行变更 没隔60秒  有10000条key进行变更. 以上任意条达成条件后,就会重新生成一个dump.rdb文件.就是当前redis内存中完整的快照,这个操作也被称之为snapshotting,快照也可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成

命令提示符(cmd)中的tracert命令详解(小技巧)

tracert也被称为Windows路由跟踪实用程序,在命令提示符(cmd)中使用tracert命令可以用于确定IP数据包访问目标时所选择的路径.本文主要探讨了tracert命令的各个功能. 百度经验:jingyan.baidu.com 工具/原料 计算机一台,要求安装Windows操作系统,本例中采用的是Win7版本. 百度经验:jingyan.baidu.com 方法/步骤 1 进入Windows命令提示符程序.Win7系统直接在开始菜单下方的输入框中输入“cmd”或“命令提示符”就可以进入

MySQL中EXPLAIN解释命令详解

MySQL中的explain命令显示了mysql如何使用索引来处理select语句以及连接表.explain显示的信息可以帮助选择更好的索引和写出更优化的查询语句. 1.EXPLAIN的使用方法:在select语句前加上explain就可以了. 如:explain select surname,first_name form a,b where a.id=b.id 2.EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型.从最好到最

命令提示符(cmd)中的tracert命令详解

tracert也被称为Windows路由跟踪实用程序,在命令提示符(cmd)中使用tracert命令可以用于确定IP数据包访问目标时所选择的路径.本文主要探讨了tracert命令的各个功能. 工具/原料 计算机一台,要求安装Windows操作系统,本例中采用的是Win7版本. 方法/步骤 1 进入Windows命令提示符程序.Win7系统直接在开始菜单下方的输入框中输入"cmd"或"命令提示符"就可以进入了.XP系统需要在开始菜单中找到运行(或按下快捷键R),在运行

redis笔记——list结构命令详解

lpush key value 作用: 把值插入到链接头部 rpop key 作用: 返回并删除链表尾元素 rpush,lpop: 不解释 lrange key start  stop 作用: 返回链表中[start ,stop]中的元素 规律: 左数从0开始,右数从-1开始 lrem key count value 作用: 从key链表中删除 value值 注: 删除count的绝对值个value后结束 Count>0 从表头删除 Count<0 从表尾删除 ltrim key start

Memcached中的存取命令详解

本文和大家分享的主要是Memcached中常用的一些存取命令相关用法,一起来看看吧,希望对大家学习Memcached有所帮互助. 存储命令 set:不管key存在与否,强制进行set操作: add:必须在memcached中不存在相应key才能作用: replace:要求memcached中必须存在相应key才能作用: append:将数据追加到key对应value值的末尾.(不允许超过限制,用于管理list) cas(check and set):另一个存储数据的操作,当你最后一次读取该数据后

Linux下的压缩解压缩命令详解

zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o -d /home/sunny myfile.zip把myfile.zip文件解压到 /home/sunny/-o:不提示的情况下覆盖文件:-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他zip -d myfile.zip smart.txt删除压缩文件中smart.txt文件z

Linux下的压缩zip,解压缩unzip命令详解及实例

Linux下的压缩zip,解压缩unzip命令 本人亲自测试总结: linux 安装unzip zip 安装命令:yum install -y unzip zip # unzip yasuo.zip 方法一: 安装命令:yum install -y unzip zip 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:# zip -r yasuo.zip abc.txt dir12.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip