redis的二进制数组命令

举报
周杰伦本人 发表于 2022/06/26 14:55:15 2022/06/26
【摘要】 redis的二进制数组命令 getbit 命令 setbit命令 bitcount命令 总结 ❤️ 感谢大家 redis的二进制数组命令redis的二进制数组是用SDS来表示的,sds的len属性的值表示SDS保存了多少字节长的位数组,buf数组每个字节用一行来表示,每行8位而且数组是通过逆序来保存位数组的 getbit 命令getbit命令显然是返回位数组指定偏移量的二进制位的值,red...

redis的二进制数组命令

redis的二进制数组是用SDS来表示的,sds的len属性的值表示SDS保存了多少字节长的位数组,buf数组每个字节用一行来表示,每行8位而且数组是通过逆序来保存位数组的

getbit 命令

getbit命令显然是返回位数组指定偏移量的二进制位的值,

redis> GETBIT bit 10086
(integer) 1

执行过程是对偏移量除以8计算出偏移量指定的二进制位保存在位数组的那个字节中,然后偏移量mod8再加一计算出在第几二进制位中,获取到这个位的值进行返回

setbit命令

setbit命令就是对指定的偏移量设置新值,并返回旧值。如果偏移量大于当前的就会进行扩展

redis> SETBIT bit 10086 1
(integer) 0

bitcount命令

bitcount命令是用来统计数组中值是1的个数

redis> BITCOUNT bits
(integer) 0

redis> SETBIT bits 0 1          # 0001
(integer) 0

redis> BITCOUNT bits
(integer) 1

redis> SETBIT bits 3 1          # 1001
(integer) 0

redis> BITCOUNT bits
(integer) 2

bitcount命令的实现redis使用了查表法和汉明算法,二进制位的数量大于等于128位使用汉明算法,小于128位使用查表法。

bitop and 是进行与操作

bitop or是进行或操作

bitop xor是进行异或操作

bitop not是进行非操作

总结

这篇文章主要介绍了redis的二进制数组的相关内容,redis的二进制数组用SDS来表示,getbit命令返回位数组指定偏移量的二进制位的值,setbit命令对指定的偏移量设置新值,并返回旧值,bitcount命令统计数组中值是1的个数,当二进制位的数量大于等于128位的时候使用的是汉明算法,小于128位的时候使用的是查表法,bitop命令对二进制数组进行位操作,它有各种的参数,and表示与操作,or表示或操作,xor表示异或操作,not表示非操作,这些命令都是对二进制数组的操作命令,熟练掌握二进制数组命令可以让我们更加熟悉redis的二进制数组。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。