1+ // EXAMPLE: ss_tutorial
2+ <?php
3+
4+ require 'vendor/autoload.php ' ;
5+
6+ use Predis \Client as PredisClient ;
7+
8+ class DtSortedSetsTest
9+ // REMOVE_START
10+ extends PredisTestCase
11+ // REMOVE_END
12+ {
13+ public function testDtSortedSet () {
14+ $ r = new PredisClient ([
15+ 'scheme ' => 'tcp ' ,
16+ 'host ' => '127.0.0.1 ' ,
17+ 'port ' => 6379 ,
18+ 'password ' => '' ,
19+ 'database ' => 0 ,
20+ ]);
21+ // REMOVE_START
22+ $ r ->flushall ();
23+ // REMOVE_END
24+
25+ // STEP_START zadd
26+ $ res1 = $ r ->zadd ('racer_scores ' , ['Norem ' => 10 ]);
27+ echo $ res1 . PHP_EOL ;
28+ // >>> 1
29+
30+ $ res2 = $ r ->zadd ('racer_scores ' , ['Castilla ' => 12 ]);
31+ echo $ res2 . PHP_EOL ;
32+ // >>> 1
33+
34+ $ res3 = $ r ->zadd ('racer_scores ' , [
35+ 'Sam-Bodden ' => 8 ,
36+ 'Royce ' => 10 ,
37+ 'Ford ' => 6 ,
38+ 'Prickett ' => 14 ,
39+ 'Castilla ' => 12 ,
40+ ]);
41+ echo $ res3 . PHP_EOL ;
42+ // >>> 4
43+ // STEP_END
44+ // REMOVE_START
45+ $ this ->assertEquals (1 , $ res1 );
46+ $ this ->assertEquals (1 , $ res2 );
47+ $ this ->assertEquals (4 , $ res3 );
48+ // REMOVE_END
49+
50+ // STEP_START zrange
51+ $ res4 = $ r ->zrange ('racer_scores ' , 0 , -1 );
52+ echo json_encode ($ res4 ) . PHP_EOL ;
53+ // >>> ["Ford","Sam-Bodden","Norem","Royce","Castilla","Prickett"]
54+
55+ $ res5 = $ r ->zrevrange ('racer_scores ' , 0 , -1 );
56+ echo json_encode ($ res5 ) . PHP_EOL ;
57+ // >>> ["Prickett","Castilla","Royce","Norem","Sam-Bodden","Ford"]
58+ // STEP_END
59+ // REMOVE_START
60+ $ this ->assertEquals (['Ford ' , 'Sam-Bodden ' , 'Norem ' , 'Royce ' , 'Castilla ' , 'Prickett ' ], $ res4 );
61+ $ this ->assertEquals (['Prickett ' , 'Castilla ' , 'Royce ' , 'Norem ' , 'Sam-Bodden ' , 'Ford ' ], $ res5 );
62+ // REMOVE_END
63+
64+ // STEP_START zrange_withscores
65+ $ res6 = $ r ->zrange ('racer_scores ' , 0 , -1 ,[
66+ 'withscores ' => true ,
67+ ]);
68+ echo json_encode ($ res6 ) . PHP_EOL ;
69+ // >>> {"Ford":"6","Sam-Bodden":"8","Norem":"10","Royce":"10","Castilla":"12","Prickett":"14"}
70+ // STEP_END
71+ // REMOVE_START
72+ $ this ->assertEquals (
73+ ['Ford ' => 6 , 'Sam-Bodden ' => 8 , 'Norem ' => 10 , 'Royce ' => 10 , 'Castilla ' => 12 , 'Prickett ' => 14 ],
74+ $ res6
75+ );
76+ // REMOVE_END
77+
78+ // STEP_START zrangebyscore
79+ $ res7 = $ r ->zrangebyscore ('racer_scores ' , '-inf ' , 10 );
80+ echo json_encode ($ res7 ) . PHP_EOL ;
81+ // >>> ["Ford","Sam-Bodden","Norem","Royce"]
82+ // STEP_END
83+ // REMOVE_START
84+ $ this ->assertEquals (['Ford ' , 'Sam-Bodden ' , 'Norem ' , 'Royce ' ], $ res7 );
85+ // REMOVE_END
86+
87+ // STEP_START zremrangebyscore
88+ $ res8 = $ r ->zrem ('racer_scores ' , 'Castilla ' );
89+ echo $ res8 . PHP_EOL ;
90+ // >>> 1
91+
92+ $ res9 = $ r ->zremrangebyscore ('racer_scores ' , '-inf ' , 9 );
93+ echo $ res9 . PHP_EOL ;
94+ // >>> 2
95+
96+ $ res10 = $ r ->zrange ('racer_scores ' , 0 , -1 );
97+ echo json_encode ($ res10 ) . PHP_EOL ;
98+ // >>> ["Norem","Royce","Prickett"]
99+ // STEP_END
100+ // REMOVE_START
101+ $ this ->assertEquals (1 , $ res8 );
102+ $ this ->assertEquals (2 , $ res9 );
103+ $ this ->assertEquals (['Norem ' , 'Royce ' , 'Prickett ' ], $ res10 );
104+ // REMOVE_END
105+
106+ // STEP_START zrank
107+ $ res11 = $ r ->zrank ('racer_scores ' , 'Norem ' );
108+ echo $ res11 . PHP_EOL ;
109+ // >>> 0
110+
111+ $ res12 = $ r ->zrevrank ('racer_scores ' , 'Norem ' );
112+ echo $ res12 . PHP_EOL ;
113+ // >>> 2
114+ // STEP_END
115+ // REMOVE_START
116+ $ this ->assertEquals (0 , $ res11 );
117+ $ this ->assertEquals (2 , $ res12 );
118+ // REMOVE_END
119+
120+ // STEP_START zadd_lex
121+ $ res13 = $ r ->zadd ('racer_scores ' , [
122+ 'Norem ' => 0 ,
123+ 'Sam-Bodden ' => 0 ,
124+ 'Royce ' => 0 ,
125+ 'Ford ' => 0 ,
126+ 'Prickett ' => 0 ,
127+ 'Castilla ' => 0 ,
128+ ]);
129+ echo $ res13 . PHP_EOL ;
130+ // >>> 3
131+
132+ $ res14 = $ r ->zrange ('racer_scores ' , 0 , -1 );
133+ echo json_encode ($ res14 ) . PHP_EOL ;
134+ // >>> ["Castilla","Ford","Norem","Prickett","Royce","Sam-Bodden"]
135+
136+ $ res15 = $ r ->zrangebylex ('racer_scores ' , '[A ' , '[L ' );
137+ echo json_encode ($ res15 ) . PHP_EOL ;
138+ // >>> ["Castilla","Ford"]
139+ // STEP_END
140+ // REMOVE_START
141+ $ this ->assertEquals (3 , $ res13 );
142+ $ this ->assertEquals (['Castilla ' , 'Ford ' , 'Norem ' , 'Prickett ' , 'Royce ' , 'Sam-Bodden ' ], $ res14 );
143+ $ this ->assertEquals (['Castilla ' , 'Ford ' ], $ res15 );
144+ // REMOVE_END
145+
146+ // STEP_START leaderboard
147+ $ res16 = $ r ->zadd ('racer_scores ' , ['Wood ' => 100 ]);
148+ echo $ res16 . PHP_EOL ;
149+ // >>> 1
150+
151+ $ res17 = $ r ->zadd ('racer_scores ' , ['Henshaw ' => 100 ]);
152+ echo $ res17 . PHP_EOL ;
153+ // >>> 1
154+
155+ $ res18 = $ r ->zadd ('racer_scores ' , ['Henshaw ' => 150 ]);
156+ echo $ res18 . PHP_EOL ;
157+ // >>> 0
158+
159+ $ res19 = $ r ->zincrby ('racer_scores ' , 50 , 'Wood ' );
160+ echo $ res19 . PHP_EOL ;
161+ // >>> 150
162+
163+ $ res20 = $ r ->zincrby ('racer_scores ' , 50 , 'Henshaw ' );
164+ echo $ res20 . PHP_EOL ;
165+ // >>> 200
166+ // STEP_END
167+ // REMOVE_START
168+ $ this ->assertEquals (1 , $ res16 );
169+ $ this ->assertEquals (1 , $ res17 );
170+ $ this ->assertEquals (0 , $ res18 );
171+ $ this ->assertEquals (150 , $ res19 );
172+ $ this ->assertEquals (200 , $ res20 );
173+ // REMOVE_END
174+ }
175+ }
0 commit comments