Skip to content

Commit 09728b8

Browse files
committed
Refactoring for 2.0
1 parent f031b3c commit 09728b8

File tree

1 file changed

+11
-106
lines changed

1 file changed

+11
-106
lines changed

redis.c

Lines changed: 11 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -415,19 +415,7 @@ PHP_METHOD(Redis, set)
415415
RETURN_FALSE;
416416
}
417417

418-
cmd_len = redis_cmd_format(&cmd,
419-
"*3" _NL
420-
"$3" _NL
421-
"SET" _NL
422-
423-
"$%d" _NL /* key_len */
424-
"%s" _NL /* key */
425-
426-
"$%d" _NL /* val_len */
427-
"%s" _NL /* val */
428-
429-
, key_len, key, key_len
430-
, val_len, val, val_len);
418+
cmd_len = redis_cmd_format_static(&cmd, "SET", "ss", key, key_len, val, val_len);
431419

432420
REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len);
433421
IF_ATOMIC() {
@@ -456,23 +444,7 @@ PHP_METHOD(Redis, setex)
456444
RETURN_FALSE;
457445
}
458446

459-
cmd_len = redis_cmd_format(&cmd,
460-
"*4" _NL
461-
"$5" _NL
462-
"SETEX" _NL
463-
464-
"$%d" _NL /* key_len */
465-
"%s" _NL /* key */
466-
467-
"$%d" _NL /* expire_len */
468-
"%d" _NL /* expire */
469-
470-
"$%d" _NL /* val_len */
471-
"%s" _NL /* val */
472-
473-
, key_len, key, key_len
474-
, integer_length(expire), expire
475-
, val_len, val, val_len);
447+
cmd_len = redis_cmd_format_static(&cmd, "SETEX", "sds", key, key_len, expire, val, val_len);
476448

477449
REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len);
478450
IF_ATOMIC() {
@@ -501,19 +473,7 @@ PHP_METHOD(Redis, setnx)
501473
RETURN_FALSE;
502474
}
503475

504-
cmd_len = redis_cmd_format(&cmd,
505-
"*3" _NL
506-
"$5" _NL
507-
"SETNX" _NL
508-
509-
"$%d" _NL /* key_len */
510-
"%s" _NL /* key */
511-
512-
"$%d" _NL /* val_len */
513-
"%s" _NL /* val */
514-
515-
, key_len, key, key_len
516-
, val_len, val, val_len);
476+
cmd_len = redis_cmd_format_static(&cmd, "SETNX", "ss", key, key_len, val, val_len);
517477

518478
REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len);
519479

@@ -545,19 +505,7 @@ PHP_METHOD(Redis, getSet)
545505
RETURN_FALSE;
546506
}
547507

548-
cmd_len = redis_cmd_format(&cmd,
549-
"*3" _NL
550-
"$6" _NL
551-
"GETSET" _NL
552-
553-
"$%d" _NL /* key_len */
554-
"%s" _NL /* key */
555-
556-
"$%d" _NL /* val_len */
557-
"%s" _NL /* val */
558-
559-
, key_len, key, key_len
560-
, val_len, val, val_len);
508+
cmd_len = redis_cmd_format_static(&cmd, "GETSET", "ss", key, key_len, val, val_len);
561509

562510
REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len);
563511
IF_ATOMIC() {
@@ -923,7 +871,6 @@ PHP_METHOD(Redis, getKeys)
923871
RedisSock *redis_sock;
924872
char *pattern = NULL, *cmd, *response;
925873
int pattern_len, cmd_len, response_len, count;
926-
char inbuf[1024];
927874

928875
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os",
929876
&object, redis_ce,
@@ -937,56 +884,14 @@ PHP_METHOD(Redis, getKeys)
937884

938885
cmd_len = redis_cmd_format_static(&cmd, "KEYS", "s", pattern, pattern_len);
939886

940-
if (redis_sock_write(redis_sock, cmd, cmd_len) < 0) {
941-
efree(cmd);
942-
RETURN_FALSE;
943-
}
944-
efree(cmd);
945-
946-
/* two cases:
947-
* 1 - old versions of redis (before 1st of March 2010): one space-separated line
948-
* 2 - newer versions of redis: multi-bulk data.
949-
*
950-
* The following code supports both.
951-
**/
952-
953-
/* prepare for php_explode */
954-
array_init(return_value);
955-
956-
/* read a first line. */
957-
redis_check_eof(redis_sock TSRMLS_CC);
958-
php_stream_gets(redis_sock->stream, inbuf, 1024);
959-
960-
switch(inbuf[0]) { /* check what character it starts with. */
961-
case '$':
962-
response_len = atoi(inbuf + 1);
963-
response = redis_sock_read_bulk_reply(redis_sock, response_len);
964-
if(!response_len) { /* empty array in case of an empty string */
965-
efree(response);
966-
return;
967-
}
968-
zval *delimiter; /* delimiter */
969-
MAKE_STD_ZVAL(delimiter);
970-
ZVAL_STRING(delimiter, " ", 1);
971-
972-
zval *keys; /* keys */
973-
MAKE_STD_ZVAL(keys);
974-
ZVAL_STRING(keys, response, 1);
975-
php_explode(delimiter, keys, return_value, -1);
976-
977-
/* free memory */
978-
zval_dtor(keys);
979-
efree(keys);
980-
zval_dtor(delimiter);
981-
efree(delimiter);
982-
break;
983-
984-
case '*':
985-
count = atoi(inbuf + 1);
986-
redis_sock_read_multibulk_reply_loop(INTERNAL_FUNCTION_PARAM_PASSTHRU,
987-
redis_sock, return_value, count);
988-
break;
887+
REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len);
888+
IF_ATOMIC() {
889+
if (redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAM_PASSTHRU,
890+
redis_sock, NULL) < 0) {
891+
RETURN_FALSE;
892+
}
989893
}
894+
REDIS_PROCESS_RESPONSE(redis_sock_read_multibulk_reply);
990895
}
991896
/* }}} */
992897

0 commit comments

Comments
 (0)