diff --git a/local_examples/php/DtSortedSetsTest.php b/local_examples/php/DtSortedSetsTest.php new file mode 100644 index 0000000000..68dfc08695 --- /dev/null +++ b/local_examples/php/DtSortedSetsTest.php @@ -0,0 +1,175 @@ +// EXAMPLE: ss_tutorial + 'tcp', + 'host' => '127.0.0.1', + 'port' => 6379, + 'password' => '', + 'database' => 0, + ]); + // REMOVE_START + $r->flushall(); + // REMOVE_END + + // STEP_START zadd + $res1 = $r->zadd('racer_scores', ['Norem' => 10]); + echo $res1 . PHP_EOL; + // >>> 1 + + $res2 = $r->zadd('racer_scores', ['Castilla' => 12]); + echo $res2 . PHP_EOL; + // >>> 1 + + $res3 = $r->zadd('racer_scores', [ + 'Sam-Bodden' => 8, + 'Royce' => 10, + 'Ford' => 6, + 'Prickett' => 14, + 'Castilla' => 12, + ]); + echo $res3 . PHP_EOL; + // >>> 4 + // STEP_END + // REMOVE_START + $this->assertEquals(1, $res1); + $this->assertEquals(1, $res2); + $this->assertEquals(4, $res3); + // REMOVE_END + + // STEP_START zrange + $res4 = $r->zrange('racer_scores', 0, -1); + echo json_encode($res4) . PHP_EOL; + // >>> ["Ford","Sam-Bodden","Norem","Royce","Castilla","Prickett"] + + $res5 = $r->zrevrange('racer_scores', 0, -1); + echo json_encode($res5) . PHP_EOL; + // >>> ["Prickett","Castilla","Royce","Norem","Sam-Bodden","Ford"] + // STEP_END + // REMOVE_START + $this->assertEquals(['Ford', 'Sam-Bodden', 'Norem', 'Royce', 'Castilla', 'Prickett'], $res4); + $this->assertEquals(['Prickett', 'Castilla', 'Royce', 'Norem', 'Sam-Bodden', 'Ford'], $res5); + // REMOVE_END + + // STEP_START zrange_withscores + $res6 = $r->zrange('racer_scores', 0, -1,[ + 'withscores' => true, + ]); + echo json_encode($res6) . PHP_EOL; + // >>> {"Ford":"6","Sam-Bodden":"8","Norem":"10","Royce":"10","Castilla":"12","Prickett":"14"} + // STEP_END + // REMOVE_START + $this->assertEquals( + ['Ford' => 6, 'Sam-Bodden' => 8, 'Norem' => 10, 'Royce' => 10, 'Castilla' => 12, 'Prickett' => 14], + $res6 + ); + // REMOVE_END + + // STEP_START zrangebyscore + $res7 = $r->zrangebyscore('racer_scores', '-inf', 10); + echo json_encode($res7) . PHP_EOL; + // >>> ["Ford","Sam-Bodden","Norem","Royce"] + // STEP_END + // REMOVE_START + $this->assertEquals(['Ford', 'Sam-Bodden', 'Norem', 'Royce'], $res7); + // REMOVE_END + + // STEP_START zremrangebyscore + $res8 = $r->zrem('racer_scores', 'Castilla'); + echo $res8 . PHP_EOL; + // >>> 1 + + $res9 = $r->zremrangebyscore('racer_scores', '-inf', 9); + echo $res9 . PHP_EOL; + // >>> 2 + + $res10 = $r->zrange('racer_scores', 0, -1); + echo json_encode($res10) . PHP_EOL; + // >>> ["Norem","Royce","Prickett"] + // STEP_END + // REMOVE_START + $this->assertEquals(1, $res8); + $this->assertEquals(2, $res9); + $this->assertEquals(['Norem', 'Royce', 'Prickett'], $res10); + // REMOVE_END + + // STEP_START zrank + $res11 = $r->zrank('racer_scores', 'Norem'); + echo $res11 . PHP_EOL; + // >>> 0 + + $res12 = $r->zrevrank('racer_scores', 'Norem'); + echo $res12 . PHP_EOL; + // >>> 2 + // STEP_END + // REMOVE_START + $this->assertEquals(0, $res11); + $this->assertEquals(2, $res12); + // REMOVE_END + + // STEP_START zadd_lex + $res13 = $r->zadd('racer_scores', [ + 'Norem' => 0, + 'Sam-Bodden' => 0, + 'Royce' => 0, + 'Ford' => 0, + 'Prickett' => 0, + 'Castilla' => 0, + ]); + echo $res13 . PHP_EOL; + // >>> 3 + + $res14 = $r->zrange('racer_scores', 0, -1); + echo json_encode($res14) . PHP_EOL; + // >>> ["Castilla","Ford","Norem","Prickett","Royce","Sam-Bodden"] + + $res15 = $r->zrangebylex('racer_scores', '[A', '[L'); + echo json_encode($res15) . PHP_EOL; + // >>> ["Castilla","Ford"] + // STEP_END + // REMOVE_START + $this->assertEquals(3, $res13); + $this->assertEquals(['Castilla', 'Ford', 'Norem', 'Prickett', 'Royce', 'Sam-Bodden'], $res14); + $this->assertEquals(['Castilla', 'Ford'], $res15); + // REMOVE_END + + // STEP_START leaderboard + $res16 = $r->zadd('racer_scores', ['Wood' => 100]); + echo $res16 . PHP_EOL; + // >>> 1 + + $res17 = $r->zadd('racer_scores', ['Henshaw' => 100]); + echo $res17 . PHP_EOL; + // >>> 1 + + $res18 = $r->zadd('racer_scores', ['Henshaw' => 150]); + echo $res18 . PHP_EOL; + // >>> 0 + + $res19 = $r->zincrby('racer_scores', 50, 'Wood'); + echo $res19 . PHP_EOL; + // >>> 150 + + $res20 = $r->zincrby('racer_scores', 50, 'Henshaw'); + echo $res20 . PHP_EOL; + // >>> 200 + // STEP_END + // REMOVE_START + $this->assertEquals(1, $res16); + $this->assertEquals(1, $res17); + $this->assertEquals(0, $res18); + $this->assertEquals(150, $res19); + $this->assertEquals(200, $res20); + // REMOVE_END + } +} \ No newline at end of file