《Redis开发与运维》笔记-Bitmaps与Hyperloglog

Bitmaps

数据结构模型

Bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。

Bitmaps单独提供了一套命令,所以在Redis中操作Bitmaps和操作字符串类型的方法不太一样。可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量。

命令

设置值

setbit key offset value

示例:
//设置key 为bit:demo  位移量为100 的值为0
setbit bit:demo 100 0
//设置key 为bit:demo  位移量为101 的值为1
setbit bit:demo 101 1

获取值

//获取键的第offset位的值(从0开始算) 如果位移量不存在,返回结果也会是0
getbit key offset

获取Bitmaps指定范围值为1的个数

bigcount key start end

start end分别代表范围开始和结束的字节数。一个字节等于8位 ,Bitmaps是按位存储的。

计算Bitmaps中第一个值为targetBit的偏移量

bitpos key targetBit start end

Bitmaps的运算

bitop op destkey key...

bitop是一个复合操作,可以做多个Bitmaps的and(交集),or(并集),not(非),xor(异或)操作并将结果保存到destkey中。

Hyperloglog

Hyperloglog并不是一种新的数据结构(实际上也是字符串类型),而是一种基数算法,通过Hyperloglog可以利用极小的内存空间完成独立总数的统计。因此提供了三个命令操作:
pfadd 添加

pfadd key element...

pfcount 计算独立用户数

pfcount key...

pfmerge 合并

//可以求出多个Hyperloglog的并集并赋值给destkey
pfmerge destkey sourcekey...

Hyperloglog虽然内存占用量非常小,但是存在错误率。
选择此类型原则:

  1. 只为了计算独立总数,不需要获取单条数据;
  2. 可以容忍一定误差率,毕竟Hyperloglog在内存的占用量上有很大的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Layne_lei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值