SETBITkeyoffsetvalue

玄學醬發表於2018-03-02

設定或者清空key的value(字串)在offset處的bit值。

那個位置的bit要麼被設定,要麼被清空,這個由value(只能是0或者1)來決定。當key不存在的時候,就建立一個新的字串value。要確保這個字串大到在offset處有bit值。引數offset需要大於等於0,並且小於232(限制bitmap大小為512)。當key對應的字串增大的時候,新增的部分bit值都是設定為0。

警告:當set最後一個bit(offset等於232-1)並且key還沒有一個字串value或者其value是個比較小的字串時,Redis需要立即分配所有記憶體,這有可能會導致服務阻塞一會。在一臺2010MacBook Pro上,offset為232-1(分配512MB)需要~300ms,offset為230-1(分配128MB)需要~80ms,offset為228-1(分配32MB)需要~30ms,offset為226-1(分配8MB)需要8ms。注意,一旦第一次記憶體分配完,後面對同一個key呼叫SETBIT就不會預先得到記憶體分配。

##返回值

integer-reply:在offset處原來的bit值

##例子

redis> SETBIT mykey 7 1
(integer) 0
redis> SETBIT mykey 7 0
(integer) 1
redis> GET mykey
"x00"
redis>
本文作者:陳群
本文來自雲棲社群合作伙伴rediscn,瞭解相關資訊可以關注redis.cn網站。