RedisJson مع امتداد PHP Redis phpredis.
يوفر Phpredis-JSON مجموعة كاملة من الأوامر لوحدة RedisJson. إنه مبني على phpredis
ويستخدمه كعميل Redis، لذا يمكنك أيضًا الاستفادة من بعض الميزات المضمنة في phpredis
كعميل Redis.
على الرغم من أنه يمكنك إصدار أوامر RedisJSON باستخدام بعض عملاء PHP Redis والتي توفر لك القدرة على إرسال أوامر Redis الأولية، إلا أن 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 ' );
من وحدة التحكم، قم بتشغيل الأمر التالي من الدليل الجذر لهذا المشروع:
./vendor/bin/phpunit
إذا لم تقم بتكوين خادم Redis المحلي الخاص بك في 127.0.0.1:6379، فيمكنك تعيين REDIS_TEST_SERVER وREDIS_TEST_PORT وREDIS_TEST_DATABASE في ملف ./phpunit.xml
باستخدام مضيف Redis المحلي والمنفذ وقاعدة البيانات قبل تشغيل الأمر أعلاه.
بعد تثبيت Docker، قم بتشغيل الأمر التالي في الدليل الجذر لهذا المشروع:
bash run-tests-docker.sh
من خلال تشغيل البرنامج النصي bash أعلاه، سيتم إنشاء خدمتي عامل إرساء، إحداهما مزودة بـ PHP 7.2 مع تمكين امتدادات xdebug وredis والأخرى بصورة redislabrejson:1.0.4
(خادم Redis 5 مع تثبيت وحدة RedisJson). بعد ذلك سيتم تشغيل الاختبارات داخل حاوية خدمة عامل الإرساء phpredis-json
وفي النهاية سيتم إيقاف كلتا الحاويتين.
يتم توزيع كود Phpredis-Json بموجب ترخيص MIT، راجع ملف الترخيص