Redis系统学习-应用-位图

概念了解

我们日常开发过程中,要尽量简化业务模型,使用最少的内存,描述事物,程序就是通过各种数据的操作、传输,来模拟现实生活中的人与人之间的操作。从而简化生活,提升工作效率,品质。
比如某个签到活动,每周一开始,周末晚结算这周签到的天数来发送奖励。这种具有过期性的数据,并且只有个住居简单,只有个状态位,可采用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系统学习-应用-位图

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