Redis setbit 命令

SETBIT key offset value

对存储在key中字符串,设置或清除 offset 偏移位的值。

根据值value是1或0来设置或清除位bit。当key不存在,那么会创建一个新的字符串。

字符串的长度将增大,以确保它可以在offset位置存储值。

offset 参数需要大于等于0,并且小于 232 (bitmaps 最大 512MB)。

当键处的字符串增大时,添加的bit设置为0。

注意: 当设置的是最后一位bit (offset e等于 232 -1),存储在key中的字符串还没有存储一个字符串值,或者存储的是一个短的字符串值时,Redis需要分配所有的中间内存,这会阻塞Redis服务器一段时间。在2010年的 MacBook Pro上,设置 232 -1位bit (分配512MB内存) 需花费300ms,设置 230 -1位bit (分配128MB内存) 需花费80m,设置 228 -1位bit (分配32MB内存) 需花费30ms,设置 226 -1位bit (分配8MB内存) 需花费8ms。 需要注意的是,一旦第一步内存分配被完成,对于同一个 key 接下来调用 SETBIT 将不会有分配内存开销。

返回值

整数应答Integer reply: 存储在 offset位的原始值。

例子

redis> SETBIT mykey 7 1
(integer) 0
redis> SETBIT mykey 7 0
(integer) 1
redis> GET mykey
"\u0000"
redis>