概念了解

我们日常开发过程中,要尽量简化业务模型,使用最少的内存,描述事物,程序就是通过各种数据的操作、传输,来模拟现实生活中的人与人之间的操作。从而简化生活,提升工作效率,品质。
比如某个签到活动,每周一开始,周末晚结算这周签到的天数来发送奖励。这种具有过期性的数据,并且只有个住居简单,只有个状态位,可采用redis的位图来解决。
位图是基于String上的运用,我们可以使用普通的 get/set 直接获取和设置整个位图的内容,也可以使用位图操作 getbit/setbit 等将 byte 数组看成「位数组」来处理。

涉及到的命令

Redis系统学习-应用-位图
在此基础上有另外两个命令,方便统计
Redis系统学习-应用-位图
牛牛们不会有闲心一个位一个位设置的,批量操作命令bitfield
bitfield 有三个子指令,分别是 get/set/incrby,它们都可以对指定位片段进行读写,但是最多只能处理 64 个连续的位,如果超过 64 位,就得使用多个子指令,bitfield 可以一次执行多个子指令。
Redis系统学习-应用-位图
Redis系统学习-应用-位图

剩下一个incrby,自增,这里就有个长度溢出,自增是基于当前字符的,也就是8位,有符号最大值就是127,无符号:255
Redis系统学习-应用-位图
bitfield 指令提供了溢出策略子指令 overflow,用户可以选择溢出行为,默认是折返 (wrap),还可以选择失败 (fail) 报错不执行,以及饱和截断 (sat),超过了范围就停留在最大最小值
Redis系统学习-应用-位图

项目中没有遇到过,理解不是很透彻,在项目中很难联想到这个。

相关文章:

  • 2021-10-20
  • 2021-11-19
  • 2022-01-07
  • 2022-12-23
  • 2022-01-19
  • 2021-05-17
  • 2021-09-23
猜你喜欢
  • 2022-12-23
  • 2022-01-08
  • 2021-09-25
  • 2021-05-20
  • 2021-08-15
  • 2021-06-16
  • 2022-12-23
相关资源
相似解决方案