33require_once 'includes/common.inc.php ' ;
44
55
6-
7-
86// Export to redis-cli commands
9- function export_redis ($ key ) {
7+ function export_redis ($ key , $ filter = false , $ transform = false ) {
8+
109 global $ redis ;
1110
1211 $ type = $ redis ->type ($ key );
1312
14-
13+ // we rename the keys as necessary
14+ if ($ filter !== false && $ transform !== false )
15+ $ outputKey = str_replace ($ filter , $ transform , $ key );
16+ else
17+ $ outputKey = $ key ;
18+
1519 // String
1620 if ($ type == 'string ' ) {
17- echo 'SET " ' ,addslashes ($ key ),'" " ' ,addslashes ($ redis ->get ($ key )),'" ' ,PHP_EOL ;
21+ echo 'SET " ' ,addslashes ($ outputKey ),'" " ' ,addslashes ($ redis ->get ($ key )),'" ' ,PHP_EOL ;
1822 }
1923
2024 // Hash
2125 else if ($ type == 'hash ' ) {
2226 $ values = $ redis ->hGetAll ($ key );
2327
2428 foreach ($ values as $ k => $ v ) {
25- echo 'HSET " ' ,addslashes ($ key ),'" " ' ,addslashes ($ k ),'" " ' ,addslashes ($ v ),'" ' ,PHP_EOL ;
29+ echo 'HSET " ' ,addslashes ($ outputKey ),'" " ' ,addslashes ($ k ),'" " ' ,addslashes ($ v ),'" ' ,PHP_EOL ;
2630 }
2731 }
2832
@@ -31,7 +35,7 @@ function export_redis($key) {
3135 $ size = $ redis ->lLen ($ key );
3236
3337 for ($ i = 0 ; $ i < $ size ; ++$ i ) {
34- echo 'RPUSH " ' ,addslashes ($ key ),'" " ' ,addslashes ($ redis ->lIndex ($ key , $ i )),'" ' ,PHP_EOL ;
38+ echo 'RPUSH " ' ,addslashes ($ outputKey ),'" " ' ,addslashes ($ redis ->lIndex ($ key , $ i )),'" ' ,PHP_EOL ;
3539 }
3640 }
3741
@@ -40,7 +44,7 @@ function export_redis($key) {
4044 $ values = $ redis ->sMembers ($ key );
4145
4246 foreach ($ values as $ v ) {
43- echo 'SADD " ' ,addslashes ($ key ),'" " ' ,addslashes ($ v ),'" ' ,PHP_EOL ;
47+ echo 'SADD " ' ,addslashes ($ outputKey ),'" " ' ,addslashes ($ v ),'" ' ,PHP_EOL ;
4448 }
4549 }
4650
@@ -51,7 +55,7 @@ function export_redis($key) {
5155 foreach ($ values as $ v ) {
5256 $ s = $ redis ->zScore ($ key , $ v );
5357
54- echo 'ZADD " ' ,addslashes ($ key ),'" ' ,$ s ,' " ' ,addslashes ($ v ),'" ' ,PHP_EOL ;
58+ echo 'ZADD " ' ,addslashes ($ outputKey ),'" ' ,$ s ,' " ' ,addslashes ($ v ),'" ' ,PHP_EOL ;
5559 }
5660 }
5761}
@@ -64,7 +68,6 @@ function export_json($key) {
6468
6569 $ type = $ redis ->type ($ key );
6670
67-
6871 // String
6972 if ($ type == 'string ' ) {
7073 $ value = $ redis ->get ($ key );
@@ -116,9 +119,12 @@ function export_json($key) {
116119 header ('Content-type: ' .$ ct .'; charset=utf-8 ' );
117120 header ('Content-Disposition: inline; filename="export. ' .$ ext .'" ' );
118121
122+ $ filter = !empty ($ _POST ['filter ' ]) ? trim ($ _POST ['filter ' ]) : false ;
123+ $ transform = !empty ($ _POST ['transform ' ]) ? trim ($ _POST ['transform ' ]) : false ;
119124
120125 // JSON
121126 if ($ _POST ['type ' ] == 'json ' ) {
127+
122128 // Single key
123129 if (isset ($ _GET ['key ' ])) {
124130 echo json_encode (export_json ($ _GET ['key ' ]));
@@ -127,7 +133,18 @@ function export_json($key) {
127133 $ vals = array ();
128134
129135 foreach ($ keys as $ key ) {
130- $ vals [$ key ] = export_json ($ key );
136+
137+ // if we have a filter and no match, nothing to do
138+ if ($ filter !== false && stripos ($ key , $ filter ) === false )
139+ continue ;
140+
141+ // we rename the keys as necessary
142+ if ($ filter !== false && $ transform !== false )
143+ $ outputKey = str_replace ($ filter , $ transform , $ key );
144+ else
145+ $ outputKey = $ key ;
146+
147+ $ vals [$ outputKey ] = export_json ($ key );
131148 }
132149
133150 echo json_encode ($ vals );
@@ -136,14 +153,20 @@ function export_json($key) {
136153
137154 // Redis Commands
138155 else {
156+
139157 // Single key
140158 if (isset ($ _GET ['key ' ])) {
141159 export_redis ($ _GET ['key ' ]);
142160 } else { // All keys
143161 $ keys = $ redis ->keys ('* ' );
144162
145163 foreach ($ keys as $ key ) {
146- export_redis ($ key );
164+
165+ // if we have a filter and no match, we skip
166+ if ($ filter !== false && stripos ($ key , $ filter ) === false )
167+ continue ;
168+
169+ export_redis ($ key , $ filter , $ transform );
147170 }
148171 }
149172 }
@@ -171,7 +194,19 @@ function export_json($key) {
171194<option value="redis" <?php echo (isset ($ _GET ['type ' ]) && ($ _GET ['type ' ] == 'redis ' )) ? 'selected="selected" ' : '' ?> >Redis</option>
172195<option value="json" <?php echo (isset ($ _GET ['type ' ]) && ($ _GET ['type ' ] == 'json ' )) ? 'selected="selected" ' : '' ?> >JSON</option>
173196</select>
174- </p>
197+ </p>
198+
199+ <?php if (!isset ($ _GET ['key ' ])): ?>
200+ <p>
201+ <label for="filter">Filter:</label>
202+ <input type="text" name="filter" />
203+ </p>
204+
205+ <p>
206+ <label for="transform">Tranform:</label>
207+ <input type="text" name="transform" />
208+ </p>
209+ <?php endif ; ?>
175210
176211<p>
177212<input type="submit" class="button" value="Export">
0 commit comments