@@ -415,19 +415,7 @@ PHP_METHOD(Redis, set)
415
415
RETURN_FALSE ;
416
416
}
417
417
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 );
431
419
432
420
REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
433
421
IF_ATOMIC () {
@@ -456,23 +444,7 @@ PHP_METHOD(Redis, setex)
456
444
RETURN_FALSE ;
457
445
}
458
446
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 );
476
448
477
449
REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
478
450
IF_ATOMIC () {
@@ -501,19 +473,7 @@ PHP_METHOD(Redis, setnx)
501
473
RETURN_FALSE ;
502
474
}
503
475
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 );
517
477
518
478
REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
519
479
@@ -545,19 +505,7 @@ PHP_METHOD(Redis, getSet)
545
505
RETURN_FALSE ;
546
506
}
547
507
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 );
561
509
562
510
REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
563
511
IF_ATOMIC () {
@@ -923,7 +871,6 @@ PHP_METHOD(Redis, getKeys)
923
871
RedisSock * redis_sock ;
924
872
char * pattern = NULL , * cmd , * response ;
925
873
int pattern_len , cmd_len , response_len , count ;
926
- char inbuf [1024 ];
927
874
928
875
if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Os" ,
929
876
& object , redis_ce ,
@@ -937,56 +884,14 @@ PHP_METHOD(Redis, getKeys)
937
884
938
885
cmd_len = redis_cmd_format_static (& cmd , "KEYS" , "s" , pattern , pattern_len );
939
886
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
+ }
989
893
}
894
+ REDIS_PROCESS_RESPONSE (redis_sock_read_multibulk_reply );
990
895
}
991
896
/* }}} */
992
897
0 commit comments