Bit data
1. Bit Data¶
- Bitfields & Bit Arrays
- Compact, Optimized structures
- Commands to manipulate Bits
- No explicit Bit data type
- Commands operate on Strings
2. BIT DATA 예시¶
> BITFIELD mykey SET u8 0 42 # (1)
1) "0"
> GET mykey # (2)
"*"
> BITFIELD mykey get u8 0 # (2)
1) "42"
> BITFIELD mykey INCRBY u8 0 1 # (3)
1) "43"
> TYPE mykey # (4)
"string"
> OBJECT encoding mykey # (5)
"raw"
> GET mykey # (6)
"+"
아스키 테이블을 뒤져보면 42 는 "*"
43 은 "+"
임을 알 수 있다. 이제 BITFIELD 명령을 부셔보자.
3. BITFIELD¶
BITFIELD
명령은 다른 Sub Command 들과 함께 구성됩니다.
BITFIELD key
[GET encoding offset]
[SET encoding offset value]
[INCRBY encoding offset increment]
[OVERFLOW <WRAP | SAT | FAIL>]
encoding 이란?
- Signed (i) or Unsigned (u)
- Size (Number of Bits)
- 최대
i64
oru63
- 스키마가 없기 때문에 개발자가 해당 비트의 구성을 명확히 알아야 한다.
> BITFIELD mykey SET u8 0 42 # (1)
> BITFIELD mykey get u8 0 # (2)
> BITFIELD mykey INCRBY u8 0 1 # (3)
mykey
를unsigned 8 bit
의 인코딩으로 취급해서0 번째 offset
에42
라는 값을 채워 넣어라.mykey
를unsigned 8 bit
의 인코딩으로 취급해서0 번째 offset
부터 값을 읽어라mykey
를unsigned 8 bit
의 인코딩으로 취급해서0 번째 offset
의 값을 1 올려라
BITFIELD mykey SET u8 2 1
의 결과는?
4. BITCOUNT, BITOP, BITPOS¶
4.1. BITCOUNT¶
- default -
BYTE
redis> SET mykey "foobar"
"OK"
redis> BITCOUNT mykey
(integer) 26
redis> BITCOUNT mykey 0 0
(integer) 4
redis> BITCOUNT mykey 1 1
(integer) 6
redis> BITCOUNT mykey 1 1 BYTE
(integer) 6
redis> BITCOUNT mykey 5 30 BIT
(integer) 17
redis>
4.2 BITOP¶
not a
=10011110b
=0x9e
4.3 BITPOS¶
Last update:
May 17, 2023
Created: May 17, 2023
Created: May 17, 2023