RedisJson dengan ekstensi PHP Redis phpredis.
Phpredis-JSON menyediakan serangkaian perintah lengkap untuk Modul RedisJson. Itu dibangun di atas phpredis
dan menggunakannya sebagai klien Redis, sehingga Anda juga dapat memanfaatkan beberapa fitur yang disertakan dalam phpredis
sebagai klien Redis.
Meskipun Anda dapat mengeluarkan perintah RedisJSON dengan menggunakan beberapa klien PHP Redis yang memberi Anda kemampuan untuk mengirim perintah Redis mentah, Phpredis-JSON:
<?php
use Averias RedisJson Enum JsonCommands ;
use Averias RedisJson Exception ResponseException ;
use Averias RedisJson Factory RedisJsonClientFactory ;
// *** get a RedisJsonClient ***
$ redisJsonClientFactory = new RedisJsonClientFactory ();
/**
* creates a RedisJsonClient with default connection params:
* [
* 'host' => '127.0.0.1',
* 'port' => 6379,
* 'timeout' => 0.0, // seconds
* 'retryInterval' => 15 // milliseconds
* 'readTimeout' => 2, // seconds
* 'persistenceId' => null // string for persistent connections, null for no persistent ones
* 'database' => 0 // Redis database index [0..15]
* ]
*/
$ defaultClient = $ redisJsonClientFactory -> createClient ();
// creates a configured RedisJsonClient
$ client = $ redisJsonClientFactory -> createClient ([
' host ' => ' 127.0.0.1 ' ,
' port ' => 6390 ,
' timeout ' => 2 ,
' database ' => 15
]);
// *** Redis JSON commands ***
$ result = $ client -> jsonSet ( ' people ' , [ " name " => " gafael " , " age " => 12 ]);
echo ( $ result === true ? ' true ' : ' false ' ) . PHP_EOL ; // true
$ result = $ client -> jsonGet ( ' people ' ); // $result = ["name":"gafael","age":12]
echo json_encode ( $ result ) . PHP_EOL ; // {"name":"gafael","age":12}
$ result = $ client -> jsonGet ( ' people ' , ' .name ' );
echo $ result . PHP_EOL ; // "gafael"
$ result = $ client -> jsonGet ( ' people ' , ' .age ' );
echo $ result . PHP_EOL ; // 12
// "nonexistent" key does not exist, so a ResponseException is thrown
try {
$ result = $ client -> jsonGet ( ' nonexistent ' );
echo $ result . PHP_EOL ;
} catch ( ResponseException $ e ) {
echo " key nonexistent does not exist " . PHP_EOL ;
}
// *** you can also send RedisJSON command as raw commands using "RedisJsonClient::executeRawCommand" ***
// you will send
$ result = $ client -> executeRawCommand (JsonCommands:: SET , ' people ' , ' .colors ' , ' ["blue", "green"] ' );
echo $ result . PHP_EOL ; // 'OK'
// and receive JSON values
$ result = $ client -> executeRawCommand (JsonCommands:: GET , ' people ' , ' . ' );
echo $ result . PHP_EOL ; // {"name":"gafael","age":12,"colors":["blue","green"]}
// *** you can also issue redis commands and use RedisJsonClient as "phpredis" client:
echo $ client -> hset ( ' hash-key ' , ' age ' , 34 ) . PHP_EOL ; // 0
echo $ client -> hget ( ' hash-key ' , ' age ' ) . PHP_EOL ; // 34
// $ret = [true,"val1",true,"val2"]
$ ret = $ client -> multi ()
-> set ( ' key1 ' , ' val1 ' )
-> get ( ' key1 ' )
-> set ( ' key2 ' , ' val2 ' )
-> get ( ' key2 ' )
-> exec ();
echo json_encode ( $ ret ) . PHP_EOL ;
RedisJsonClient::executeRawCommand
: // raw Redis JSON command
$ client -> executeRawCommand (JsonCommands:: GET , ' people ' , ' . ' );
// raw Redis command
$ client -> executeRawCommand ( ' hget, ' hash-key', ' foo ' );
Dari konsol jalankan perintah berikut dari direktori root proyek ini:
./vendor/bin/phpunit
jika Anda belum mengonfigurasi server Redis lokal Anda di 127.0.0.1:6379 Anda dapat mengatur REDIS_TEST_SERVER dan REDIS_TEST_PORT dan REDIS_TEST_DATABASE di file ./phpunit.xml
dengan host, port, dan database Redis lokal Anda sebelum menjalankan perintah di atas.
Setelah Docker terinstal, jalankan perintah berikut di direktori root proyek ini:
bash run-tests-docker.sh
dengan menjalankan skrip bash di atas, dua layanan buruh pelabuhan akan dibangun, satu dengan PHP 7.2 dengan ekstensi xdebug dan redis diaktifkan dan satu lagi dengan gambar redislabrejson:1.0.4
(server Redis 5 dengan modul RedisJson terpasang). Kemudian pengujian akan dijalankan di dalam container layanan buruh pelabuhan phpredis-json
dan akhirnya kedua container akan dihentikan.
Kode Phpredis-Json didistribusikan di bawah lisensi MIT, lihat file LISENSI