@@ -154,9 +154,12 @@ static zend_function_entry redis_functions[] = {
154
154
PHP_ME (Redis , bgrewriteaof , NULL , ZEND_ACC_PUBLIC )
155
155
PHP_ME (Redis , slaveof , NULL , ZEND_ACC_PUBLIC )
156
156
PHP_ME (Redis , object , NULL , ZEND_ACC_PUBLIC )
157
+
157
158
PHP_ME (Redis , eval , NULL , ZEND_ACC_PUBLIC )
158
159
PHP_ME (Redis , evalsha , NULL , ZEND_ACC_PUBLIC )
159
160
PHP_ME (Redis , script , NULL , ZEND_ACC_PUBLIC )
161
+ PHP_ME (Redis , dump , NULL , ZEND_ACC_PUBLIC )
162
+ PHP_ME (Redis , restore , NULL , ZEND_ACC_PUBLIC )
160
163
161
164
/* 1.1 */
162
165
PHP_ME (Redis , mset , NULL , ZEND_ACC_PUBLIC )
@@ -5796,10 +5799,10 @@ PHP_METHOD(Redis, script) {
5796
5799
// Grab the number of arguments
5797
5800
argc = ZEND_NUM_ARGS ();
5798
5801
5799
- // Allocate aan array big enough to store our arguments, and grab them
5802
+ // Allocate an array big enough to store our arguments
5800
5803
z_args = emalloc (argc * sizeof (zval * ));
5801
5804
5802
- // Make sure we can grab our arguments, we have a directive (that is a string), and the directive is one we know about
5805
+ // Make sure we can grab our arguments, we have a string directive
5803
5806
if (zend_get_parameters_array (ht , argc , z_args ) == FAILURE ||
5804
5807
(argc < 1 || Z_TYPE_P (z_args [0 ]) != IS_STRING ))
5805
5808
{
@@ -5842,5 +5845,71 @@ PHP_METHOD(Redis, script) {
5842
5845
REDIS_PROCESS_RESPONSE (redis_read_variant_reply );
5843
5846
}
5844
5847
5848
+ /* {{{ proto DUMP key
5849
+ */
5850
+ PHP_METHOD (Redis , dump ) {
5851
+ zval * object ;
5852
+ RedisSock * redis_sock ;
5853
+ char * cmd , * key ;
5854
+ int cmd_len , key_len , key_free ;
5855
+
5856
+ // Parse our arguments
5857
+ if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Os" , & object , redis_ce ,
5858
+ & key , & key_len ) == FAILURE ) {
5859
+ RETURN_FALSE ;
5860
+ }
5861
+
5862
+ // Grab our socket
5863
+ if (redis_sock_get (object , & redis_sock TSRMLS_CC , 0 ) < 0 ) {
5864
+ RETURN_FALSE ;
5865
+ }
5866
+
5867
+ // Prefix our key if we need to
5868
+ key_free = redis_key_prefix (redis_sock , & key , & key_len TSRMLS_CC );
5869
+ cmd_len = redis_cmd_format_static (& cmd , "DUMP" , "s" , key , key_len );
5870
+ if (key_free ) efree (key );
5871
+
5872
+ // Kick off our request
5873
+ REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
5874
+ IF_ATOMIC () {
5875
+ redis_string_response (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , NULL , NULL );
5876
+ }
5877
+ REDIS_PROCESS_RESPONSE (redis_string_response );
5878
+ }
5879
+
5880
+ /*
5881
+ * {{{ proto RESTORE ttl key value
5882
+ */
5883
+ PHP_METHOD (Redis , restore ) {
5884
+ zval * object ;
5885
+ RedisSock * redis_sock ;
5886
+ char * cmd , * key , * value ;
5887
+ int cmd_len , key_len , value_len , key_free ;
5888
+ long ttl ;
5889
+
5890
+ // Parse our arguments
5891
+ if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Osls" , & object , redis_ce ,
5892
+ & key , & key_len , & ttl , & value , & value_len ) == FAILURE ) {
5893
+ RETURN_FALSE ;
5894
+ }
5895
+
5896
+ // Grab our socket
5897
+ if (redis_sock_get (object , & redis_sock TSRMLS_CC , 0 ) < 0 ) {
5898
+ RETURN_FALSE ;
5899
+ }
5900
+
5901
+ // Prefix the key if we need to
5902
+ key_free = redis_key_prefix (redis_sock , & key , & key_len TSRMLS_CC );
5903
+ cmd_len = redis_cmd_format_static (& cmd , "RESTORE" , "sls" , key , key_len , ttl , value , value_len );
5904
+ if (key_free ) efree (key );
5905
+
5906
+ // Kick off our restore request
5907
+ REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
5908
+ IF_ATOMIC () {
5909
+ redis_boolean_response (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , NULL , NULL );
5910
+ }
5911
+ REDIS_PROCESS_RESPONSE (redis_boolean_response );
5912
+ }
5913
+
5845
5914
/* vim: set tabstop=4 softtabstop=4 noexpandtab shiftwidth=4: */
5846
5915
0 commit comments