mirror of
https://github.com/php-win-ext/phpredis.git
synced 2026-03-24 00:52:16 +01:00
Implement DELIFEQ command
Implement the command and add a test.
This commit is contained in:
committed by
Michael Grunder
parent
b0ba827be2
commit
b1b0c19142
4
redis.c
4
redis.c
@@ -988,6 +988,10 @@ PHP_METHOD(Redis, del) {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
PHP_METHOD(Redis, delifeq) {
|
||||
REDIS_PROCESS_KW_CMD("DELIFEQ", redis_kv_cmd, redis_long_response);
|
||||
}
|
||||
|
||||
/* {{{ proto long Redis::unlink(string $key1, string $key2 [, string $key3...]) }}}
|
||||
* {{{ proto long Redis::unlink(array $keys) */
|
||||
PHP_METHOD(Redis, unlink)
|
||||
|
||||
@@ -987,6 +987,16 @@ class Redis {
|
||||
*/
|
||||
public function del(array|string $key, string ...$other_keys): Redis|int|false;
|
||||
|
||||
/**
|
||||
* Delete a key if it's equal to the specified value. This command is
|
||||
* specific to Valkey >= 9.0
|
||||
*
|
||||
* @param string $key The key to delete
|
||||
* @param mixed $value The value to compare against the key's value.
|
||||
* @return Redis|int|false Returns 1 if the key was deleted, 0 if it was not.
|
||||
*/
|
||||
public function delifeq(string $key, mixed $value): Redis|int|false;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @alias Redis::del
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 89e401bc3bc52dbd6d20f0459f5740b3ec855eb2 */
|
||||
* Stub hash: d5f56120b09dc6a8240d87efa53dc5749c031f38 */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0)
|
||||
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null")
|
||||
@@ -175,6 +175,8 @@ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_Redis_del, 0, 1, Redis
|
||||
ZEND_ARG_VARIADIC_TYPE_INFO(0, other_keys, IS_STRING, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_class_Redis_delifeq arginfo_class_Redis_append
|
||||
|
||||
#define arginfo_class_Redis_delete arginfo_class_Redis_del
|
||||
|
||||
#define arginfo_class_Redis_discard arginfo_class_Redis_bgSave
|
||||
@@ -1286,6 +1288,7 @@ ZEND_METHOD(Redis, debug);
|
||||
ZEND_METHOD(Redis, decr);
|
||||
ZEND_METHOD(Redis, decrBy);
|
||||
ZEND_METHOD(Redis, del);
|
||||
ZEND_METHOD(Redis, delifeq);
|
||||
ZEND_METHOD(Redis, discard);
|
||||
ZEND_METHOD(Redis, dump);
|
||||
ZEND_METHOD(Redis, echo);
|
||||
@@ -1560,6 +1563,7 @@ static const zend_function_entry class_Redis_methods[] = {
|
||||
ZEND_ME(Redis, decr, arginfo_class_Redis_decr, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, decrBy, arginfo_class_Redis_decrBy, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, del, arginfo_class_Redis_del, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, delifeq, arginfo_class_Redis_delifeq, ZEND_ACC_PUBLIC)
|
||||
ZEND_MALIAS(Redis, delete, del, arginfo_class_Redis_delete, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED)
|
||||
ZEND_ME(Redis, discard, arginfo_class_Redis_discard, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, dump, arginfo_class_Redis_dump, ZEND_ACC_PUBLIC)
|
||||
|
||||
@@ -800,6 +800,10 @@ PHP_METHOD(RedisCluster, del) {
|
||||
cluster_generic_delete(INTERNAL_FUNCTION_PARAM_PASSTHRU, "DEL", sizeof("DEL") - 1);
|
||||
}
|
||||
|
||||
PHP_METHOD(RedisCluster, delifeq) {
|
||||
CLUSTER_PROCESS_KW_CMD("DELIFEQ", redis_kv_cmd, cluster_long_resp, 0);
|
||||
}
|
||||
|
||||
/* {{{ proto array RedisCluster::unlink(string key1, string key2, ... keyN) */
|
||||
PHP_METHOD(RedisCluster, unlink) {
|
||||
cluster_generic_delete(INTERNAL_FUNCTION_PARAM_PASSTHRU, "UNLINK", sizeof("UNLINK") - 1);
|
||||
|
||||
@@ -255,6 +255,16 @@ class RedisCluster {
|
||||
*/
|
||||
public function del(array|string $key, string ...$other_keys): RedisCluster|int|false;
|
||||
|
||||
/**
|
||||
* Delete a key if it's equal to the specified value. This command is
|
||||
* specific to Valkey >= 9.0
|
||||
*
|
||||
* @param string $key The key to delete
|
||||
* @param mixed $value The value to compare against the key's value.
|
||||
* @return RedisCluster|int|false Returns 1 if the key was deleted, 0 if it was not.
|
||||
*/
|
||||
public function delifeq(string $key, mixed $value): RedisCluster|int|false;
|
||||
|
||||
/**
|
||||
* @see Redis::discard
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: a4928c230ba6d599b66087fa831dd26bf1d4c5d7 */
|
||||
* Stub hash: 0f01437681bc6df1d6e2b39e6a0c7c5c77f6237e */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1)
|
||||
ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 1)
|
||||
@@ -198,6 +198,11 @@ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_del, 0, 1
|
||||
ZEND_ARG_VARIADIC_TYPE_INFO(0, other_keys, IS_STRING, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_delifeq, 0, 2, RedisCluster, MAY_BE_LONG|MAY_BE_FALSE)
|
||||
ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
|
||||
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_class_RedisCluster_discard arginfo_class_RedisCluster_clearlasterror
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_dump, 0, 1, RedisCluster, MAY_BE_STRING|MAY_BE_FALSE)
|
||||
@@ -1167,6 +1172,7 @@ ZEND_METHOD(RedisCluster, decr);
|
||||
ZEND_METHOD(RedisCluster, decrby);
|
||||
ZEND_METHOD(RedisCluster, decrbyfloat);
|
||||
ZEND_METHOD(RedisCluster, del);
|
||||
ZEND_METHOD(RedisCluster, delifeq);
|
||||
ZEND_METHOD(RedisCluster, discard);
|
||||
ZEND_METHOD(RedisCluster, dump);
|
||||
ZEND_METHOD(RedisCluster, echo);
|
||||
@@ -1412,6 +1418,7 @@ static const zend_function_entry class_RedisCluster_methods[] = {
|
||||
ZEND_ME(RedisCluster, decrby, arginfo_class_RedisCluster_decrby, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, decrbyfloat, arginfo_class_RedisCluster_decrbyfloat, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, del, arginfo_class_RedisCluster_del, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, delifeq, arginfo_class_RedisCluster_delifeq, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, discard, arginfo_class_RedisCluster_discard, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, dump, arginfo_class_RedisCluster_dump, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, echo, arginfo_class_RedisCluster_echo, ZEND_ACC_PUBLIC)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: a4928c230ba6d599b66087fa831dd26bf1d4c5d7 */
|
||||
* Stub hash: 0f01437681bc6df1d6e2b39e6a0c7c5c77f6237e */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, name)
|
||||
@@ -178,6 +178,8 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_del, 0, 0, 1)
|
||||
ZEND_ARG_VARIADIC_INFO(0, other_keys)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_class_RedisCluster_delifeq arginfo_class_RedisCluster_append
|
||||
|
||||
#define arginfo_class_RedisCluster_discard arginfo_class_RedisCluster__masters
|
||||
|
||||
#define arginfo_class_RedisCluster_dump arginfo_class_RedisCluster__prefix
|
||||
@@ -1005,6 +1007,7 @@ ZEND_METHOD(RedisCluster, decr);
|
||||
ZEND_METHOD(RedisCluster, decrby);
|
||||
ZEND_METHOD(RedisCluster, decrbyfloat);
|
||||
ZEND_METHOD(RedisCluster, del);
|
||||
ZEND_METHOD(RedisCluster, delifeq);
|
||||
ZEND_METHOD(RedisCluster, discard);
|
||||
ZEND_METHOD(RedisCluster, dump);
|
||||
ZEND_METHOD(RedisCluster, echo);
|
||||
@@ -1250,6 +1253,7 @@ static const zend_function_entry class_RedisCluster_methods[] = {
|
||||
ZEND_ME(RedisCluster, decrby, arginfo_class_RedisCluster_decrby, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, decrbyfloat, arginfo_class_RedisCluster_decrbyfloat, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, del, arginfo_class_RedisCluster_del, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, delifeq, arginfo_class_RedisCluster_delifeq, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, discard, arginfo_class_RedisCluster_discard, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, dump, arginfo_class_RedisCluster_dump, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(RedisCluster, echo, arginfo_class_RedisCluster_echo, ZEND_ACC_PUBLIC)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 89e401bc3bc52dbd6d20f0459f5740b3ec855eb2 */
|
||||
* Stub hash: d5f56120b09dc6a8240d87efa53dc5749c031f38 */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
@@ -163,6 +163,8 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis_del, 0, 0, 1)
|
||||
ZEND_ARG_VARIADIC_INFO(0, other_keys)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_class_Redis_delifeq arginfo_class_Redis_append
|
||||
|
||||
#define arginfo_class_Redis_delete arginfo_class_Redis_del
|
||||
|
||||
#define arginfo_class_Redis_discard arginfo_class_Redis___destruct
|
||||
@@ -1124,6 +1126,7 @@ ZEND_METHOD(Redis, debug);
|
||||
ZEND_METHOD(Redis, decr);
|
||||
ZEND_METHOD(Redis, decrBy);
|
||||
ZEND_METHOD(Redis, del);
|
||||
ZEND_METHOD(Redis, delifeq);
|
||||
ZEND_METHOD(Redis, discard);
|
||||
ZEND_METHOD(Redis, dump);
|
||||
ZEND_METHOD(Redis, echo);
|
||||
@@ -1398,6 +1401,7 @@ static const zend_function_entry class_Redis_methods[] = {
|
||||
ZEND_ME(Redis, decr, arginfo_class_Redis_decr, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, decrBy, arginfo_class_Redis_decrBy, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, del, arginfo_class_Redis_del, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, delifeq, arginfo_class_Redis_delifeq, ZEND_ACC_PUBLIC)
|
||||
ZEND_MALIAS(Redis, delete, del, arginfo_class_Redis_delete, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED)
|
||||
ZEND_ME(Redis, discard, arginfo_class_Redis_discard, ZEND_ACC_PUBLIC)
|
||||
ZEND_ME(Redis, dump, arginfo_class_Redis_dump, ZEND_ACC_PUBLIC)
|
||||
|
||||
@@ -1093,6 +1093,16 @@ class Redis_Test extends TestSuite {
|
||||
$this->genericDelUnlink('DEL');
|
||||
}
|
||||
|
||||
public function testDelIfEq() {
|
||||
if ( ! $this->haveCommand('DELIFEQ'))
|
||||
$this->markTestSkipped();
|
||||
|
||||
$this->assertTrue($this->redis->set('key', 'value'));
|
||||
$this->assertEquals(0, $this->redis->delifeq('key', 'notvalue'));
|
||||
$this->assertEquals(1, $this->redis->delifeq('key', 'value'));
|
||||
$this->assertEquals(0, $this->redis->exists('key'));
|
||||
}
|
||||
|
||||
public function testUnlink() {
|
||||
if (version_compare($this->version, '4.0.0') < 0)
|
||||
$this->markTestSkipped();
|
||||
|
||||
Reference in New Issue
Block a user