Rumah > Artikel > pangkalan data > Fahami peta bit redis dalam satu artikel
Artikel ini membawakan anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan masalah bitmap Redis memberikan kita struktur data bitmap Struktur data bitmap sebenarnya bukan perkara baharu, kita boleh anggap ia sebagai tatasusunan, tetapi kandungan di dalamnya hanya boleh 0 atau 1. Saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: Tutorial video Redis
Redis membekalkan kami dengan struktur data bitmap Setiap rekod log masuk harian pengguna hanya menduduki satu bit adalah 365 bit. Ia hanya memerlukan 46 bait untuk menyimpan, yang sangat Menjimatkan ruang storan.
Struktur data bitmap sebenarnya bukanlah sesuatu yang baharu. Kita boleh menganggapnya sebagai tatasusunan, tetapi kandungan di dalamnya hanya Ia hanya boleh menjadi 0 atau 1 (tatasusunan bit binari).
Redis menyediakan empat arahan biasa:2. Amalan perintah
, SETBIT
untuk memproses tatasusunan bit binari . GETBIT
BITCOUNT
BITOP
: Menentukan nilai tetapan bit binari pada offset tatasusunan bit Offset mula dikira dari 0, dan nilai bit binari hanya boleh menjadi 0 atau 1 . Mengembalikan nilai kedudukan asal.3.Analisis kod sumber BitMap
SETBIT
: Dapatkan nilai bit binari pada offset yang ditentukan.GETBIT
: Mengira bilangan digit binari dengan nilai 1 dalam tatasusunan bit.BITCOUNT
: Lakukan operasi bitwise AND, OR, dan XOR pada berbilang tatasusunan bit.BITOP
127.0.0.1:6379> SETBIT first 0 1 # 0000 0001 (integer) 0 127.0.0.1:6379> SETBIT first 3 1 # 0000 1001 (integer) 0 127.0.0.1:6379> SETBIT first 0 0 # 0000 1000 (integer) 1 127.0.0.1:6379> GETBIT first 0 (integer) 0 127.0.0.1:6379> GETBIT first 3 (integer) 1 127.0.0.1:6379> BITCOUNT first # 0000 1000 (integer) 1 127.0.0.1:6379> SETBIT first 0 1 # 0000 1001 (integer) 0 127.0.0.1:6379> BITCOUNT first # 0000 1001 (integer) 2 127.0.0.1:6379> SETBIT first 1 1 # 0000 1011 (integer) 0 127.0.0.1:6379> BITCOUNT first # 0000 1011 (integer) 3 127.0.0.1:6379> SETBIT x 3 1 (integer) 0 127.0.0.1:6379> SETBIT x 1 1 (integer) 0 127.0.0.1:6379> SETBIT x 0 1 # 0000 1011 (integer) 0 127.0.0.1:6379> SETBIT y 2 1 (integer) 0 127.0.0.1:6379> SETBIT y 1 1 # 0000 0110 (integer) 0 127.0.0.1:6379> SETBIT z 2 1 (integer) 0 127.0.0.1:6379> SETBIT z 0 1 # 0000 0101 (integer) 0 127.0.0.1:6379> BITOP AND andRes x y z #0000 0000 (integer) 1 127.0.0.1:6379> BITOP OR orRes x y z #0000 1111 (integer) 1 127.0.0.1:6379> BITOP XOR x y z #0000 1000 (integer) 1 # 对给定的位数组进行按位取反 127.0.0.1:6379> SETBIT value 0 1 (integer) 0 127.0.0.1:6379> SETBIT value 3 1 #0000 1001 (integer) 0 127.0.0.1:6379> BITOP NOT notValue value #1111 0110 (integer) 13.1 Struktur dataBerikut menunjukkan bait (8 bit) yang diwakili oleh SDS Long bitmap : Sambungan: Setiap objek dalam Redis diwakili oleh struktur redisObject. Nilai
ialah
typedef struct redisObject { // 类型 unsigned type:4; // 编码 unsigned encoding:4; unsigned lru:REDIS_LRU_BITS; /* lru time (relative to server.lruclock) */ // 引用计数 int refcount; // 执行底层实现的数据结构的指针 void *ptr; } robj;
type
REDIS_STRING
ialah 1 yang bermaksud SDS ini Menyimpan tatasusunan bit 1-bait sdshdr.len
dalam tatasusunan buf sebenarnya menyimpan tatasusunan bit buf[0]
dalam tatasusunan buf ialah yang dilampirkan secara automatik buf[1]
Atas ialah kandungan terperinci Fahami peta bit redis dalam satu artikel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!