Files
redis-docs/docs/SetbitCommand.rst
Kenneth Reitz 525e9fd3d3 all into sphinx
2011-04-06 13:27:48 -04:00

36 lines
1.6 KiB
ReStructuredText
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
`|Redis Documentation| <index.html>`_
**SetbitCommand: Contents**
  `SETBIT \_key\_ \_offset\_ \_value\_ (Redis > <#SETBIT%20_key_%20_offset_%20_value_%20(Redis%20%3E>`_
    `Return value <#Return%20value>`_
SetbitCommand
=============
SETBIT \_key\_ \_offset\_ \_value\_ (Redis >
============================================
2.1.8) = *Time complexity: O(1)*
Sets or clears the bit at *offset* in the string value stored at
*key*.
The bit is either set or cleared depending on *value*, which can be
either 0 or 1. When *key* does not exist, a new string value is
created. The string is grown to make sure it can hold a bit at
*offset*. The *offset* argument is required to be greater than or
equal to 0, and is limited to
2\ :sup:`32-1 (which limits bitmaps to 512MB). When the string at *key* is grown, added bits are set to 0.**Warning**: When setting the last possible bit (*offset* equal to 2`\ 32-1)
and the string value stored at *key* does not yet hold a string
value, or holds a small string value, Redis needs to allocate all
intermediate memory which can block the server for some time. On a
2010 Macbook Pro, setting bit number
2\ :sup:`32-1 (512MB allocation) takes ~300ms, setting bit number 2`\ 30-1
(128MB allocation) takes ~80ms, setting bit number
2\ :sup:`28-1 (32MB allocation) takes ~30ms and setting bit number 2`\ 26-1
(8MB allocation) takes ~8ms. Note that once this first allocation
is done, subsequent calls to SETBIT for the same *key* will not
have the allocation overhead.
Return value
------------
`Integer reply <ReplyTypes.html>`_, specifically: the original bit
value stored at *offset*.
.. |Redis Documentation| image:: redis.png