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
docker และในที่สุดทั้งสองคอนเทนเนอร์จะหยุดทำงาน
รหัส Phpredis-Json ได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT โปรดดูไฟล์ใบอนุญาต