Dalam bidang pembangunan web, Redis ialah pangkalan data storan nilai kunci yang sangat popular, manakala PHP ialah bahasa pengaturcaraan web yang digunakan secara meluas. Redis menyediakan banyak fungsi, salah satu yang sangat berguna ialah operasi Bitmap. Bitmap ialah struktur data dalam Redis yang boleh melaksanakan pelbagai operasi bitmap dengan mudah.
Artikel ini bertujuan untuk memperkenalkan operasi Bitmap dalam Redis dan menunjukkan cara menggunakan operasi ini dalam PHP.
Apakah itu Bitmap?
Bitmap ialah struktur data yang digunakan untuk menyimpan bit binari. Setiap bit binari hanya boleh menyimpan 0 atau 1. Oleh itu, Bitmap sering digunakan untuk mewakili status suis atau data binari lain. Dalam Redis, Bitmap ialah objek rentetan di mana setiap aksara ialah 0 atau 1.
Operasi bitmap
Redis menyediakan banyak operasi untuk Bitmap, berikut adalah beberapa operasi biasa:
Nilai offset kunci SEBIT
Arahan ini akan Menetapkan nilai rentetan kepada 0 atau 1 pada offset yang ditentukan. Kunci mestilah daripada jenis rentetan dan dianggap sebagai peta bit.
Contoh: SETBIT mykey 0 1
GETBIT key offset
Arahan ini mengembalikan bit pada offset yang ditentukan dalam nilai rentetan.
Contoh: GETBIT mykey 0
BITCOUNT key [start end]
Arahan ini mengira bit nilai rentetan yang ditetapkan kepada 1 dalam julat yang ditentukan (bit ialah 0 atau 1) Semua digit (jika permulaan dan akhir tidak diluluskan, ia akan menjadi keseluruhan rentetan).
Contoh: BITCOUNT mykey 0 4
BITOP operation destkey key [key ...]
Arahan ini menjalankan sedikit operasi dan menyimpan hasilnya dalam kekunci sasaran. Satu daripada empat operasi boleh digunakan: DAN, ATAU, XOR, dan TIDAK. -operasi bit memerlukan lebih daripada 2 kekunci
Contoh: BITOP DAN destkey key1 key2
Senario aplikasi
Bitmap ialah struktur data yang sangat fleksibel yang boleh digunakan dalam pelbagai jenis permohonan. Berikut ialah salah satu daripada beberapa senario aplikasi Bitmap:
Dalam aplikasi web, selalunya perlu untuk melaksanakan nama domain hitam putih senarai. Bitmap ialah kaedah pelaksanaan yang baik. Kami boleh memetakan setiap nama domain kepada offset dan menetapkan bit yang sepadan pada Peta Bit untuk menandakan sama ada nama domain itu tergolong dalam senarai hitam atau senarai putih.
Andaikan kita mempunyai Bitmap bernama "domain_whitelist", di mana bit ke-0 menandakan sama ada Baidu tergolong dalam senarai putih, bit pertama menandakan sama ada Google tergolong dalam senarai putih dan seterusnya. Jika bit adalah 1, nama domain berada dalam senarai putih, sebaliknya, ia berada dalam senarai hitam. Apabila kita perlu menyemak sama ada nama domain berada dalam senarai putih, hanya gunakan arahan GETBIT.
Dalam sesetengah aplikasi, banyak nombor perlu dikira dan dikira. Bitmap ialah kaedah pelaksanaan yang sangat cekap. Kita boleh menggunakan set bit untuk mewakili sama ada nombor terdapat dalam set data. Berikut ialah contoh:
Andaikan kita mempunyai Peta Bit yang menunjukkan sama ada 11 nombor muncul dalam set data (1 bermaksud kehadiran, 0 bermaksud ketiadaan):
11001101011
Sekarang, kami mahu mengira jumlah bilangan nombor dalam set data. Kita boleh menggunakan arahan BITCOUNT untuk mengira jumlah bilangan semua bit yang 1.
Dalam semakan status dalam talian, Bitmap boleh digunakan untuk menjejak status dalam talian pengguna. Setiap ID pengguna dipetakan ke ofset dalam peta bit, dan bit untuk ID yang diberikan ditetapkan kepada 1 untuk menunjukkan bahawa pengguna berada dalam talian.
Dalam aplikasi ini, anda juga boleh menggunakan arahan BITOP untuk mengira persilangan atau kesatuan semua pengguna dengan atribut yang diberikan (seperti "dalam talian" dan "bukan dalam talian").
Menggunakan PHP untuk melaksanakan operasi Bitmap
Sekarang, kami akan memperkenalkan secara terperinci cara melaksanakan operasi Bitmap dalam PHP. Sebelum kita mula, kita perlu memasang sambungan Redis. Jika anda belum memasang sambungan lagi, muat turun versi terkini daripada https://pecl.php.net/package/redis.
Berikut ialah contoh kod PHP:
//Connect to Redis
$redis = new Redis();
$redis->connect('127.0.0.1 ', 6379);
//Tetapkan bit pada Bitmap
$redis->setbit('mykey', 0, 1);
//Dapatkan bit pada offset 0
$bit = $redis->getbit('mykey', 0);
//Hitung bilangan digit yang 1 dalam Bitmap
$count = $redis-> bitcount(' mykey');
//Lakukan operasi bit
$redis->bitop('DAN', 'destkey', 'key1', 'key2');
Kod di atas Menunjukkan cara menggunakan sambungan Redis untuk melaksanakan operasi Peta Bit. Menggunakan arahan di atas, operasi berikut dilengkapkan mengikut urutan: menetapkan bit pada offset 0, mendapatkan bit pada offset 0, mengira bilangan digit dalam Bitmap iaitu 1, dan melaksanakan operasi bit.
Kesimpulan
Bitmap ialah struktur data yang sangat berkuasa yang boleh melaksanakan banyak operasi bitmap dengan mudah. Dalam aplikasi PHP, Redis menyediakan banyak arahan untuk operasi Bitmap. Kami boleh menggunakan arahan ini untuk mengurus Bitmap dengan mudah sambil meningkatkan prestasi dan kecekapan aplikasi kami. Jika anda sedang membangunkan aplikasi PHP, pastikan anda mempertimbangkan untuk menggunakan Redis dan Bitmap untuk pelbagai operasi bitmap.
Atas ialah kandungan terperinci Operasi Redis Bitmap dalam aplikasi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!