diff --git a/redis_cluster.c b/redis_cluster.c index ee11f25..a412130 100644 --- a/redis_cluster.c +++ b/redis_cluster.c @@ -287,6 +287,12 @@ PHP_METHOD(RedisCluster, get) { } /* }}} */ +/* {{{ proto string RedisCluster::getdel(string key) */ +PHP_METHOD(RedisCluster, getdel) { + CLUSTER_PROCESS_KW_CMD("GETDEL", redis_key_cmd, cluster_bulk_resp, 1); +} +/* }}} */ + /* {{{ proto array|false RedisCluster::getWithMeta(string key) */ PHP_METHOD(RedisCluster, getWithMeta) { redisCluster *c = GET_CONTEXT(); diff --git a/redis_cluster.stub.php b/redis_cluster.stub.php index 56c91f4..58cced5 100644 --- a/redis_cluster.stub.php +++ b/redis_cluster.stub.php @@ -390,6 +390,11 @@ class RedisCluster { */ public function get(string $key): mixed; + /** + * @see Redis::getdel + */ + public function getdel(string $key): mixed; + /** * @see Redis::getWithMeta */ diff --git a/redis_cluster_arginfo.h b/redis_cluster_arginfo.h index b182584..b3fb584 100644 --- a/redis_cluster_arginfo.h +++ b/redis_cluster_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 5966b99fd578eca94880e09539542edfbcbcdaed */ + * Stub hash: 43a43fa735ced4b48a361078ac8a10fb62cb1244 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 1) @@ -325,6 +325,8 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_RedisCluster_get, 0, 1, IS ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0) ZEND_END_ARG_INFO() +#define arginfo_class_RedisCluster_getdel arginfo_class_RedisCluster_get + ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_getWithMeta, 0, 1, RedisCluster, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0) ZEND_END_ARG_INFO() @@ -1129,6 +1131,7 @@ ZEND_METHOD(RedisCluster, georadiusbymember_ro); ZEND_METHOD(RedisCluster, geosearch); ZEND_METHOD(RedisCluster, geosearchstore); ZEND_METHOD(RedisCluster, get); +ZEND_METHOD(RedisCluster, getdel); ZEND_METHOD(RedisCluster, getWithMeta); ZEND_METHOD(RedisCluster, getex); ZEND_METHOD(RedisCluster, getbit); @@ -1359,6 +1362,7 @@ static const zend_function_entry class_RedisCluster_methods[] = { ZEND_ME(RedisCluster, geosearch, arginfo_class_RedisCluster_geosearch, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, geosearchstore, arginfo_class_RedisCluster_geosearchstore, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, get, arginfo_class_RedisCluster_get, ZEND_ACC_PUBLIC) + ZEND_ME(RedisCluster, getdel, arginfo_class_RedisCluster_getdel, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, getWithMeta, arginfo_class_RedisCluster_getWithMeta, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, getex, arginfo_class_RedisCluster_getex, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, getbit, arginfo_class_RedisCluster_getbit, ZEND_ACC_PUBLIC) diff --git a/redis_cluster_legacy_arginfo.h b/redis_cluster_legacy_arginfo.h index 99edcca..d117db5 100644 --- a/redis_cluster_legacy_arginfo.h +++ b/redis_cluster_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 5966b99fd578eca94880e09539542edfbcbcdaed */ + * Stub hash: 43a43fa735ced4b48a361078ac8a10fb62cb1244 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1) ZEND_ARG_INFO(0, name) @@ -295,6 +295,8 @@ ZEND_END_ARG_INFO() #define arginfo_class_RedisCluster_get arginfo_class_RedisCluster__prefix +#define arginfo_class_RedisCluster_getdel arginfo_class_RedisCluster__prefix + #define arginfo_class_RedisCluster_getWithMeta arginfo_class_RedisCluster__prefix ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_getex, 0, 0, 1) @@ -971,6 +973,7 @@ ZEND_METHOD(RedisCluster, georadiusbymember_ro); ZEND_METHOD(RedisCluster, geosearch); ZEND_METHOD(RedisCluster, geosearchstore); ZEND_METHOD(RedisCluster, get); +ZEND_METHOD(RedisCluster, getdel); ZEND_METHOD(RedisCluster, getWithMeta); ZEND_METHOD(RedisCluster, getex); ZEND_METHOD(RedisCluster, getbit); @@ -1201,6 +1204,7 @@ static const zend_function_entry class_RedisCluster_methods[] = { ZEND_ME(RedisCluster, geosearch, arginfo_class_RedisCluster_geosearch, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, geosearchstore, arginfo_class_RedisCluster_geosearchstore, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, get, arginfo_class_RedisCluster_get, ZEND_ACC_PUBLIC) + ZEND_ME(RedisCluster, getdel, arginfo_class_RedisCluster_getdel, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, getWithMeta, arginfo_class_RedisCluster_getWithMeta, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, getex, arginfo_class_RedisCluster_getex, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, getbit, arginfo_class_RedisCluster_getbit, ZEND_ACC_PUBLIC) diff --git a/tests/RedisTest.php b/tests/RedisTest.php index c16d1e0..69aaa5b 100644 --- a/tests/RedisTest.php +++ b/tests/RedisTest.php @@ -654,6 +654,13 @@ class Redis_Test extends TestSuite { $this->assertEquals('123', $this->redis->getSet('key', '123')); } + public function testGetDel() { + $this->redis->del('key'); + $this->assertTrue($this->redis->set('key', 'iexist')); + $this->assertEquals('iexist', $this->redis->getDel('key')); + $this->assertEquals(0, $this->redis->exists('key')); + } + public function testRandomKey() { for ($i = 0; $i < 1000; $i++) { $k = $this->redis->randomKey();