Redis ialah sistem storan struktur data dalam memori sumber terbuka yang biasa digunakan untuk caching, baris gilir mesej dan analisis data masa nyata. Dalam aplikasi moden dan sistem Internet, Redis telah menjadi komponen yang sangat diperlukan dan digunakan secara meluas.
Sebagai pembangun PHP, bagaimanakah anda boleh menggunakan Redis dan memanfaatkannya sepenuhnya? Titik permulaan yang baik ialah menggunakan pemacu Redis dan menyepadukannya ke dalam aplikasi PHP anda. Artikel ini meneroka proses melaksanakan pemacu Redis sumber terbuka menggunakan PHP untuk membantu pembangun lebih memahami prinsip dan kegunaannya.
Operasi yang disokong oleh pemacu Redis
Pemacu Redis menyokong pelbagai operasi, termasuk rentetan, senarai, cincang, set dan set tertib, dsb. Berikut ialah beberapa operasi biasa:
Operasi rentetan: digunakan untuk menetapkan dan mendapatkan nilai rentetan, mengubah suai nilai rentetan dan melakukan operasi pada rentetan (seperti menambahkan aksara tertentu sebelum atau selepas rentetan).
Operasi senarai: digunakan untuk menambah, memadam dan mendapatkan elemen senarai dan menyokong operasi menyekat untuk menyekat klien apabila tiada unsur dalam senarai.
Kendalian cincang: digunakan untuk menetapkan, mendapatkan dan memadam medan dalam jadual cincang, serupa dengan tatasusunan bersekutu.
Operasi set: digunakan untuk menambah, memadam dan mendapatkan elemen dalam set, menyokong operasi seperti set persilangan, kesatuan dan perbezaan.
Operasi set tersusun: serupa dengan set, tetapi setiap elemen mempunyai skor untuk menyokong pengisihan elemen.
Sambungan PHP
Cara untuk melaksanakan pemacu Redis menggunakan PHP adalah dengan menggunakan sambungan PHP. Dalam erti kata lain, kita perlu menulis sambungan bahasa C yang menukar protokol Redis kepada format yang PHP boleh kenali, dan menghantar permintaan yang dilaksanakan oleh PHP kepada pelayan Redis. Sambungan ini membenarkan aplikasi PHP berkomunikasi dengan Redis melalui panggilan fungsi perpustakaan.
Untuk menulis sambungan PHP untuk Redis, anda perlu mengetahui beberapa pengetahuan asas bahasa C dan prinsip dalaman PHP. Selain itu, anda perlu menggunakan API seperti Zend API dan Redis C API yang disediakan oleh PHP. API ini ialah pustaka fungsi untuk membina sambungan PHP. Akhirnya, kami akan menyusun sambungan ke dalam perpustakaan pautan dinamik supaya aplikasi PHP boleh memuatkannya secara dinamik dan menggunakan fungsinya.
Langkah-langkah untuk melaksanakan pemacu Redis dalam PHP
Seterusnya, kami akan memperkenalkan langkah-langkah untuk menulis pemacu Redis dalam PHP:
Pertama, anda perlu memasang pelayan Redis dan sambungan PHP. Ia boleh dipasang pada Ubuntu dengan arahan berikut:
sudo apt-get install redis-server php-redis
Sambungan bahasa C ialah jambatan antara pelayan PHP dan Redis. Kita perlu menggunakan API yang disediakan oleh PHP untuk menukar panggilan kepada format yang boleh difahami oleh Redis. Contoh berikut menunjukkan kod yang memasukkan nilai rentetan ke dalam Redis:
PHP_FUNCTION(redis_set) {
char *key, *value; zval *redis_obj; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "oss", &redis_obj, &key, &value) == FAILURE) { RETURN_NULL(); } redisContext *redis = redis_obj->redis; redisReply *reply = redisCommand(redis, "SET %s %s", key, value); RETURN_BOOL(reply->type == REDIS_REPLY_STATUS);
}
Kod ini menghuraikan parameter, termasuk objek Redis yang digunakan , kunci dan nilai dan menghantarnya ke pelayan Redis. Selepas pelayan Redis mengembalikan respons, jenis respons diperiksa dan hasilnya dikembalikan dengan sewajarnya.
Sambungan PHP ialah sambungan bahasa C terikat kepada fungsi dan pemalar PHP. Contoh berikut menunjukkan cara untuk mengikat fungsi redis_set ke dalam kelas Redis dalam PHP:
PHP_METHOD(Redis, set) {
char *key, *value; int key_len, val_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &key, &key_len, &value, &val_len) == FAILURE) { RETURN_NULL(); } zval *redis_obj = getThis(); zend_update_property_stringl(redis_ce, redis_obj, ZEND_STRL("_reply"), "", 0 TSRMLS_CC); zend_call_method_with_3_params(&redis_obj, zend_get_class_entry(redis_obj TSRMLS_CC), NULL, "redis_set", NULL, key, key_len, value, val_len); char *reply = zend_read_property(redis_ce, redis_obj, ZEND_STRL("_reply"), 0 TSRMLS_CC); RETVAL_STRINGL(reply, strlen(reply), 1);
}
Kod ini menghuraikan parameter , dan gunakan fungsi zend_call_method_with_3_params untuk memanggil fungsi redis_set. Pemalar SUCCESS menunjukkan bahawa operasi itu berjaya dan tindak balas ditetapkan kepada sifat objek Redis.
Akhir sekali, kod bahasa C perlu disusun ke dalam perpustakaan pautan dinamik. Kod ini boleh disusun ke dalam fail bernama redis.so menggunakan arahan berikut:
gcc -shared -o redis.so -I/path/to/php/include/php -I/path/to/ php/ include/php/main -I/path/to/php/include/php/TSRM -I/path/to/php/include/php/Zend -lphp5 -L/usr/local/lib -l hiredis redis. c
Pertama, kita perlu menggunakan pengkompil gcc untuk menyusun kod ke dalam perpustakaan kongsi. Parameter pertama dikongsi memberitahu gcc untuk menjana pustaka dikongsi. Pilihan -I/path/to/php/include/php adalah untuk memberitahu pengkompil lokasi fail pengepala PHP yang akan disertakan. Akhirnya, perpustakaan yang diperlukan untuk penyusunan ditentukan.
Akhir sekali, pemacu Redis sedia untuk digunakan dalam aplikasi PHP. Contoh berikut menunjukkan cara menyambung ke pelayan Redis dan menyimpan nilai rentetan:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('key', 'value');
echo $redis->get('key');
Kod ini mencipta objek Redis Baharu dan gunakan kaedah sambung untuk menyambung ke pelayan Redis. Seterusnya, gunakan kaedah yang ditetapkan untuk menyimpan nilai rentetan dan mendapatkannya dalam kaedah dapatkan.
Kesimpulan
Dalam artikel ini, kami meneroka cara melaksanakan pemacu Redis menggunakan PHP. Menggunakan sambungan PHP sebagai titik masuk, kami boleh menukar protokol Redis kepada format yang diiktiraf oleh PHP dan menghantar permintaan kepada pelayan Redis melalui API Redis C. Ini menjadikan operasi Redis dalam aplikasi PHP lebih cekap dan boleh dipercayai.
Atas ialah kandungan terperinci PHP melaksanakan pemacu Redis sumber terbuka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!