Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b1b0c19

Browse filesBrowse files
Implement DELIFEQ command
Implement the command and add a test.
1 parent b0ba827 commit b1b0c19
Copy full SHA for b1b0c19

9 files changed

+61-4Lines changed: 61 additions & 4 deletions
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎redis.c‎

Copy file name to clipboardExpand all lines: redis.c
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -988,6 +988,10 @@ PHP_METHOD(Redis, del) {
988988
}
989989
/* }}} */
990990

991+
PHP_METHOD(Redis, delifeq) {
992+
REDIS_PROCESS_KW_CMD("DELIFEQ", redis_kv_cmd, redis_long_response);
993+
}
994+
991995
/* {{{ proto long Redis::unlink(string $key1, string $key2 [, string $key3...]) }}}
992996
* {{{ proto long Redis::unlink(array $keys) */
993997
PHP_METHOD(Redis, unlink)
Collapse file

‎redis.stub.php‎

Copy file name to clipboardExpand all lines: redis.stub.php
+10Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -987,6 +987,16 @@ public function decrBy(string $key, int $value): Redis|int|false;
987987
*/
988988
public function del(array|string $key, string ...$other_keys): Redis|int|false;
989989

990+
/**
991+
* Delete a key if it's equal to the specified value. This command is
992+
* specific to Valkey >= 9.0
993+
*
994+
* @param string $key The key to delete
995+
* @param mixed $value The value to compare against the key's value.
996+
* @return Redis|int|false Returns 1 if the key was deleted, 0 if it was not.
997+
*/
998+
public function delifeq(string $key, mixed $value): Redis|int|false;
999+
9901000
/**
9911001
* @deprecated
9921002
* @alias Redis::del
Collapse file

‎redis_arginfo.h‎

Copy file name to clipboardExpand all lines: redis_arginfo.h
+5-1Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 89e401bc3bc52dbd6d20f0459f5740b3ec855eb2 */
2+
* Stub hash: d5f56120b09dc6a8240d87efa53dc5749c031f38 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0)
55
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
175175
ZEND_ARG_VARIADIC_TYPE_INFO(0, other_keys, IS_STRING, 0)
176176
ZEND_END_ARG_INFO()
177177

178+
#define arginfo_class_Redis_delifeq arginfo_class_Redis_append
179+
178180
#define arginfo_class_Redis_delete arginfo_class_Redis_del
179181

180182
#define arginfo_class_Redis_discard arginfo_class_Redis_bgSave
@@ -1286,6 +1288,7 @@ ZEND_METHOD(Redis, debug);
12861288
ZEND_METHOD(Redis, decr);
12871289
ZEND_METHOD(Redis, decrBy);
12881290
ZEND_METHOD(Redis, del);
1291+
ZEND_METHOD(Redis, delifeq);
12891292
ZEND_METHOD(Redis, discard);
12901293
ZEND_METHOD(Redis, dump);
12911294
ZEND_METHOD(Redis, echo);
@@ -1560,6 +1563,7 @@ static const zend_function_entry class_Redis_methods[] = {
15601563
ZEND_ME(Redis, decr, arginfo_class_Redis_decr, ZEND_ACC_PUBLIC)
15611564
ZEND_ME(Redis, decrBy, arginfo_class_Redis_decrBy, ZEND_ACC_PUBLIC)
15621565
ZEND_ME(Redis, del, arginfo_class_Redis_del, ZEND_ACC_PUBLIC)
1566+
ZEND_ME(Redis, delifeq, arginfo_class_Redis_delifeq, ZEND_ACC_PUBLIC)
15631567
ZEND_MALIAS(Redis, delete, del, arginfo_class_Redis_delete, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED)
15641568
ZEND_ME(Redis, discard, arginfo_class_Redis_discard, ZEND_ACC_PUBLIC)
15651569
ZEND_ME(Redis, dump, arginfo_class_Redis_dump, ZEND_ACC_PUBLIC)
Collapse file

‎redis_cluster.c‎

Copy file name to clipboardExpand all lines: redis_cluster.c
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,10 @@ PHP_METHOD(RedisCluster, del) {
800800
cluster_generic_delete(INTERNAL_FUNCTION_PARAM_PASSTHRU, "DEL", sizeof("DEL") - 1);
801801
}
802802

803+
PHP_METHOD(RedisCluster, delifeq) {
804+
CLUSTER_PROCESS_KW_CMD("DELIFEQ", redis_kv_cmd, cluster_long_resp, 0);
805+
}
806+
803807
/* {{{ proto array RedisCluster::unlink(string key1, string key2, ... keyN) */
804808
PHP_METHOD(RedisCluster, unlink) {
805809
cluster_generic_delete(INTERNAL_FUNCTION_PARAM_PASSTHRU, "UNLINK", sizeof("UNLINK") - 1);
Collapse file

‎redis_cluster.stub.php‎

Copy file name to clipboardExpand all lines: redis_cluster.stub.php
+10Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,16 @@ public function decrbyfloat(string $key, float $value): float;
255255
*/
256256
public function del(array|string $key, string ...$other_keys): RedisCluster|int|false;
257257

258+
/**
259+
* Delete a key if it's equal to the specified value. This command is
260+
* specific to Valkey >= 9.0
261+
*
262+
* @param string $key The key to delete
263+
* @param mixed $value The value to compare against the key's value.
264+
* @return RedisCluster|int|false Returns 1 if the key was deleted, 0 if it was not.
265+
*/
266+
public function delifeq(string $key, mixed $value): RedisCluster|int|false;
267+
258268
/**
259269
* @see Redis::discard
260270
*/
Collapse file

‎redis_cluster_arginfo.h‎

Copy file name to clipboardExpand all lines: redis_cluster_arginfo.h
+8-1Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: a4928c230ba6d599b66087fa831dd26bf1d4c5d7 */
2+
* Stub hash: 0f01437681bc6df1d6e2b39e6a0c7c5c77f6237e */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1)
55
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
198198
ZEND_ARG_VARIADIC_TYPE_INFO(0, other_keys, IS_STRING, 0)
199199
ZEND_END_ARG_INFO()
200200

201+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_delifeq, 0, 2, RedisCluster, MAY_BE_LONG|MAY_BE_FALSE)
202+
ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
203+
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
204+
ZEND_END_ARG_INFO()
205+
201206
#define arginfo_class_RedisCluster_discard arginfo_class_RedisCluster_clearlasterror
202207

203208
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);
11671172
ZEND_METHOD(RedisCluster, decrby);
11681173
ZEND_METHOD(RedisCluster, decrbyfloat);
11691174
ZEND_METHOD(RedisCluster, del);
1175+
ZEND_METHOD(RedisCluster, delifeq);
11701176
ZEND_METHOD(RedisCluster, discard);
11711177
ZEND_METHOD(RedisCluster, dump);
11721178
ZEND_METHOD(RedisCluster, echo);
@@ -1412,6 +1418,7 @@ static const zend_function_entry class_RedisCluster_methods[] = {
14121418
ZEND_ME(RedisCluster, decrby, arginfo_class_RedisCluster_decrby, ZEND_ACC_PUBLIC)
14131419
ZEND_ME(RedisCluster, decrbyfloat, arginfo_class_RedisCluster_decrbyfloat, ZEND_ACC_PUBLIC)
14141420
ZEND_ME(RedisCluster, del, arginfo_class_RedisCluster_del, ZEND_ACC_PUBLIC)
1421+
ZEND_ME(RedisCluster, delifeq, arginfo_class_RedisCluster_delifeq, ZEND_ACC_PUBLIC)
14151422
ZEND_ME(RedisCluster, discard, arginfo_class_RedisCluster_discard, ZEND_ACC_PUBLIC)
14161423
ZEND_ME(RedisCluster, dump, arginfo_class_RedisCluster_dump, ZEND_ACC_PUBLIC)
14171424
ZEND_ME(RedisCluster, echo, arginfo_class_RedisCluster_echo, ZEND_ACC_PUBLIC)
Collapse file

‎redis_cluster_legacy_arginfo.h‎

Copy file name to clipboardExpand all lines: redis_cluster_legacy_arginfo.h
+5-1Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: a4928c230ba6d599b66087fa831dd26bf1d4c5d7 */
2+
* Stub hash: 0f01437681bc6df1d6e2b39e6a0c7c5c77f6237e */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1)
55
ZEND_ARG_INFO(0, name)
@@ -178,6 +178,8 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_del, 0, 0, 1)
178178
ZEND_ARG_VARIADIC_INFO(0, other_keys)
179179
ZEND_END_ARG_INFO()
180180

181+
#define arginfo_class_RedisCluster_delifeq arginfo_class_RedisCluster_append
182+
181183
#define arginfo_class_RedisCluster_discard arginfo_class_RedisCluster__masters
182184

183185
#define arginfo_class_RedisCluster_dump arginfo_class_RedisCluster__prefix
@@ -1005,6 +1007,7 @@ ZEND_METHOD(RedisCluster, decr);
10051007
ZEND_METHOD(RedisCluster, decrby);
10061008
ZEND_METHOD(RedisCluster, decrbyfloat);
10071009
ZEND_METHOD(RedisCluster, del);
1010+
ZEND_METHOD(RedisCluster, delifeq);
10081011
ZEND_METHOD(RedisCluster, discard);
10091012
ZEND_METHOD(RedisCluster, dump);
10101013
ZEND_METHOD(RedisCluster, echo);
@@ -1250,6 +1253,7 @@ static const zend_function_entry class_RedisCluster_methods[] = {
12501253
ZEND_ME(RedisCluster, decrby, arginfo_class_RedisCluster_decrby, ZEND_ACC_PUBLIC)
12511254
ZEND_ME(RedisCluster, decrbyfloat, arginfo_class_RedisCluster_decrbyfloat, ZEND_ACC_PUBLIC)
12521255
ZEND_ME(RedisCluster, del, arginfo_class_RedisCluster_del, ZEND_ACC_PUBLIC)
1256+
ZEND_ME(RedisCluster, delifeq, arginfo_class_RedisCluster_delifeq, ZEND_ACC_PUBLIC)
12531257
ZEND_ME(RedisCluster, discard, arginfo_class_RedisCluster_discard, ZEND_ACC_PUBLIC)
12541258
ZEND_ME(RedisCluster, dump, arginfo_class_RedisCluster_dump, ZEND_ACC_PUBLIC)
12551259
ZEND_ME(RedisCluster, echo, arginfo_class_RedisCluster_echo, ZEND_ACC_PUBLIC)
Collapse file

‎redis_legacy_arginfo.h‎

Copy file name to clipboardExpand all lines: redis_legacy_arginfo.h
+5-1Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 89e401bc3bc52dbd6d20f0459f5740b3ec855eb2 */
2+
* Stub hash: d5f56120b09dc6a8240d87efa53dc5749c031f38 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0)
55
ZEND_ARG_INFO(0, options)
@@ -163,6 +163,8 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis_del, 0, 0, 1)
163163
ZEND_ARG_VARIADIC_INFO(0, other_keys)
164164
ZEND_END_ARG_INFO()
165165

166+
#define arginfo_class_Redis_delifeq arginfo_class_Redis_append
167+
166168
#define arginfo_class_Redis_delete arginfo_class_Redis_del
167169

168170
#define arginfo_class_Redis_discard arginfo_class_Redis___destruct
@@ -1124,6 +1126,7 @@ ZEND_METHOD(Redis, debug);
11241126
ZEND_METHOD(Redis, decr);
11251127
ZEND_METHOD(Redis, decrBy);
11261128
ZEND_METHOD(Redis, del);
1129+
ZEND_METHOD(Redis, delifeq);
11271130
ZEND_METHOD(Redis, discard);
11281131
ZEND_METHOD(Redis, dump);
11291132
ZEND_METHOD(Redis, echo);
@@ -1398,6 +1401,7 @@ static const zend_function_entry class_Redis_methods[] = {
13981401
ZEND_ME(Redis, decr, arginfo_class_Redis_decr, ZEND_ACC_PUBLIC)
13991402
ZEND_ME(Redis, decrBy, arginfo_class_Redis_decrBy, ZEND_ACC_PUBLIC)
14001403
ZEND_ME(Redis, del, arginfo_class_Redis_del, ZEND_ACC_PUBLIC)
1404+
ZEND_ME(Redis, delifeq, arginfo_class_Redis_delifeq, ZEND_ACC_PUBLIC)
14011405
ZEND_MALIAS(Redis, delete, del, arginfo_class_Redis_delete, ZEND_ACC_PUBLIC|ZEND_ACC_DEPRECATED)
14021406
ZEND_ME(Redis, discard, arginfo_class_Redis_discard, ZEND_ACC_PUBLIC)
14031407
ZEND_ME(Redis, dump, arginfo_class_Redis_dump, ZEND_ACC_PUBLIC)
Collapse file

‎tests/RedisTest.php‎

Copy file name to clipboardExpand all lines: tests/RedisTest.php
+10Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,16 @@ public function testDelete() {
10931093
$this->genericDelUnlink('DEL');
10941094
}
10951095

1096+
public function testDelIfEq() {
1097+
if ( ! $this->haveCommand('DELIFEQ'))
1098+
$this->markTestSkipped();
1099+
1100+
$this->assertTrue($this->redis->set('key', 'value'));
1101+
$this->assertEquals(0, $this->redis->delifeq('key', 'notvalue'));
1102+
$this->assertEquals(1, $this->redis->delifeq('key', 'value'));
1103+
$this->assertEquals(0, $this->redis->exists('key'));
1104+
}
1105+
10961106
public function testUnlink() {
10971107
if (version_compare($this->version, '4.0.0') < 0)
10981108
$this->markTestSkipped();

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.