redis的setbit命令
redis的setbit这个bit怎么理解,配合bitcount使用?
<img src="https://pic4.zhimg.com/8650852c348cf08ff711e44ca13aaf47_b.png" data-rawwidth="958" data-rawheight="93" class="origin_image zh-lightbox-thumb" width="958" data-original="https://pic4.zhimg.com/8650852c348cf08ff711e44ca13aaf47_r.png">

在redis中,存储的字符串都是以二级制的进行存在的。
举例:
设置一个 key-value ,键的名字叫“andy” 值为字符'a'
<img src="https://pic3.zhimg.com/85f9a07a4cfb815029f4ce266daa78a2_b.png" data-rawwidth="524" data-rawheight="99" class="origin_image zh-lightbox-thumb" width="524" data-original="https://pic3.zhimg.com/85f9a07a4cfb815029f4ce266daa78a2_r.png">
我们知道 'a' 的ASCII码是 97。转换为二进制是:01100001。offset的学名叫做“偏移” 。二进制中的每一位就是offset值啦,比如在这里 offset 0 等于 ‘0’ ,offset 1等于'1' ,offset2等于'1',offset 6 等于'1' ,没错,offset是从左往右计数的,也就是从高位往低位。
我们通过SETBIT 命令将 andy中的 'a' 变成 'b' 应该怎么变呢?
也就是将 01100001 变成 01100010 (b的ASCII码是98),这个很简单啦,也就是将'a'中的offset 6从0变成1,将offset 7 从1变成0 。
<img src="https://pic1.zhimg.com/4a65befc057124bb36c880758b26b7fc_b.png" data-rawwidth="521" data-rawheight="96" class="origin_image zh-lightbox-thumb" width="521" data-original="https://pic1.zhimg.com/4a65befc057124bb36c880758b26b7fc_r.png">
大家可能也发现了,每次SETBIT完毕之后,有一个(integer) 0或者(integer)1的返回值,这个是在你进行SETBIT 之前,该offset位的比特值。
这个时候,我们再get andy 一下,看看结果:
<img src="https://pic2.zhimg.com/9591d4a73f3471847bbc6ade20d7f94d_b.png" data-rawwidth="340" data-rawheight="50" class="content_image" width="340">
果然,就从'a' 变成 'b'了。
这就是redis 中 “SETBIT” 的基本用法。
BITCOUNT 就是统计字符串的二级制码中,有多少个'1'。 所以在这里,
BITCOUNT andy 得到的结果就是 3 啦。
以上。
redis的setbit命令的更多相关文章
- redis SETBIT命令原理
redis SETBIT命令原理 /* SETBIT key offset bitvalue */ bitset的使用位来替代传统的整形数字,标识某个数字对应的值是否存在 底层有一个byte[]来实现 ...
- redis中setbit bitcount命令详解
bitmap,位图,即是使用bit. redis字符串是一个字节序列. 1 Byte = 8 bit SETBIT key offset value 设置或者清空key的value(字符串)在offs ...
- redis中setbit的用法
原文地址:http://www.zhihu.com/question/27672245 在redis中,存储的字符串都是以二级制的进行存在的.举例:设置一个 key-value ,键的名字叫“andy ...
- redis常用的命令总结
redis常用的命令大全 1.基于内存的key-value数据库 2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次 3.支持数据持久化 4.value可以 ...
- redis 使用 get 命令读取 bitmap 类型的数据
在签到统计场景中,可以使用 bitmap 数据类型高效的存储签到数据,但 getbit 命令只能获取某一位值,就无法最优的满足部分业务场景了. 比如我们按年去存储一个用户的签到情况,365 天,只需要 ...
- redis 基本类型和命令(一)
一.Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). (1) string类型是Redis最基本的数 ...
- redis常用的命令行以及操作
redis常用的命令行以及操作 转载酱紫人的理直气壮 最后发布于2018-07-30 17:00:41 阅读数 805 收藏 转载地址:https://blog.csdn.net/li_lening ...
- NoSQL之Redis高级实用命令详解--安全和主从复制
Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...
- 2016022611 - redis订阅发布命令集合
redis消息订阅发布命令 参考地址:http://www.yiibai.com/redis/redis_pub_sub.html 消息发送者发送消息,通过redis的channal,消息接收者获取消 ...
随机推荐
- SteveY对Amazon和Google平台的吐槽
Steve Yegge, Amazon的前员工,现任Google员工,其本来想在Google+上和Google的员工讨论一些关于平台的东西,结果不小心把圈子设成了Public,结果这篇文章就公开给了全 ...
- VC学习笔记:状态栏
原文链接: http://www.cnblogs.com/skyseraph/archive/2010/11/27/1889952.html 实例学习 1 新建对话框程序 2 为Dlg类添加成员变 ...
- Set up development environment for apps for SharePoint 2013
SharePoint 2013 support app development pattern.An app for SharePoint is small and isolate applicati ...
- [转]@PathVariable和@RequestParam的区别
请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value = "/page/{id}", method = Request ...
- RAID简介[zz]
RAID 0 是指磁盘分段(Disk Striping)技术其实现方法为将数据分段,同时写到多个磁盘上.其优点是磁盘可以实现并行的输入和输出,提高磁盘读写速度,但是这种技术无容错性能:RAID 1是指 ...
- 【转】在 XAML 的属性中,转义大括号 {}
我们知道大括号"{}"在XAML中是用来处理标记扩展的. 比如: <Button Content="{Binding}"/> 但如何转义而表示普 ...
- Android开发:SharedPreferences 存储数据、获取数据
Android开发:SharedPreferences 存储数据.获取数据 email:chentravelling@163.com 开发环境:win7 64位,Android Studio. 关于S ...
- 在c和c++中的求绝对值
在c语言中,根据类型的不同,求绝对值函数也不同. int abs(int x) double fabs(double x) 求int类型用abs,求浮点类型用fabs. 而且这两个函数的所在头文件也不 ...
- HTML5学习笔记(十六):原型、类和继承【JS核心知识点】
理解原型 在JavaScript中,只要声明了一个函数,就会为该函数创建一个名为prototype的属性,该属性指向当前函数的原型对象. 而函数的原型对象有一个constructor属性,该属性指向刚 ...
- Speech and Language Processing, NLP 处理
https://www.amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210 http://web.stanford. ...