Movatterモバイル変換


[0]ホーム

URL:


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

Sign up
Appearance settings

Commit286fa63

Browse files
Implement VADD command
This is for Redis 8.0's vector sets.The command itself can be quite complex with all of the various options butpretty simple using all defaults.```php$redis->vadd('myvec', [3.14, 2.17], 'myelement');```The implementation takes a default argument `$options` which can be an array inorder to specify the myriad of other knobs users can send. We just do a bit ofvalidation on inputs (e.g. certain numeric options must be positive) and makesure the command is constructed in a valid way (e.g. REDUCE <dim> must comebefore the floating point values).By default we deliver `FP32` blobs but allow the user to send `VALUES` in theoptions array which will cause PhpRedis to send N individual values. Sendingvalues is slower but might be nice for debugging (e.g. watching monitor)See#2543
1 parent9cae781 commit286fa63

12 files changed

+356
-4
lines changed

‎common.h‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@
3131
#defineNULL ((void *) 0)
3232
#endif
3333

34+
#if defined(_WIN32)|| defined(_WIN64)
35+
# definePHPREDIS_LITTLE_ENDIAN
36+
#elif defined(__BYTE_ORDER__)&& (__BYTE_ORDER__==__ORDER_BIG_ENDIAN__)
37+
# definePHPREDIS_BIG_ENDIAN
38+
#elif defined(__BYTE_ORDER__)&& (__BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__)
39+
# definePHPREDIS_LITTLE_ENDIAN
40+
#else
41+
# error "Unknown endianness"
42+
#endif
43+
3444
#include"backoff.h"
3545

3646
typedefenum {

‎redis.c‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3050,6 +3050,14 @@ PHP_METHOD(Redis, geosearchstore) {
30503050
REDIS_PROCESS_CMD(geosearchstore,redis_long_response);
30513051
}
30523052

3053+
/*
3054+
* Vectors
3055+
*/
3056+
3057+
PHP_METHOD(Redis,vadd) {
3058+
REDIS_PROCESS_CMD(vadd,redis_long_response);
3059+
}
3060+
30533061
/*
30543062
* Streams
30553063
*/

‎redis.stub.php‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4196,6 +4196,18 @@ public function xreadgroup(string $group, string $consumer, array $streams, int
41964196
*/
41974197
publicfunctionxrevrange(string$key,string$end,string$start,int$count = -1):Redis|array|bool;
41984198

4199+
/**
4200+
* Add to a vector set
4201+
*
4202+
* @param string $key The vector set to add to.
4203+
* @param array $values A non-empty array of floating point values
4204+
* @param mixed $element The element to add to the vector set.
4205+
* @param array|null $options An optional options array
4206+
*
4207+
* @return Redis|int|false One if the key was added zero if not.
4208+
*/
4209+
publicfunctionvadd(string$key,array$values,mixed$element,array|null$options =null):Redis|int|false;
4210+
41994211
/**
42004212
* Truncate a STREAM key in various ways.
42014213
*

‎redis_arginfo.h‎

Lines changed: 10 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:ec3421b68033c6299a4dc00ab0bbd31576a10961 */
2+
* Stub hash:63a08eee8fd89efe858ef57963e939e2095296c3 */
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")
@@ -1061,6 +1061,13 @@ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_Redis_xrevrange, 0, 3,
10611061
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0,count,IS_LONG,0,"-1")
10621062
ZEND_END_ARG_INFO()
10631063

1064+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_Redis_vadd,0,3,Redis,MAY_BE_LONG|MAY_BE_FALSE)
1065+
ZEND_ARG_TYPE_INFO(0,key,IS_STRING,0)
1066+
ZEND_ARG_TYPE_INFO(0,values,IS_ARRAY,0)
1067+
ZEND_ARG_TYPE_INFO(0,element,IS_MIXED,0)
1068+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0,options,IS_ARRAY,1,"null")
1069+
ZEND_END_ARG_INFO()
1070+
10641071
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_Redis_xtrim,0,2,Redis,MAY_BE_LONG|MAY_BE_FALSE)
10651072
ZEND_ARG_TYPE_INFO(0,key,IS_STRING,0)
10661073
ZEND_ARG_TYPE_INFO(0,threshold,IS_STRING,0)
@@ -1471,6 +1478,7 @@ ZEND_METHOD(Redis, xrange);
14711478
ZEND_METHOD(Redis,xread);
14721479
ZEND_METHOD(Redis,xreadgroup);
14731480
ZEND_METHOD(Redis,xrevrange);
1481+
ZEND_METHOD(Redis,vadd);
14741482
ZEND_METHOD(Redis,xtrim);
14751483
ZEND_METHOD(Redis,zAdd);
14761484
ZEND_METHOD(Redis,zCard);
@@ -1746,6 +1754,7 @@ static const zend_function_entry class_Redis_methods[] = {
17461754
ZEND_ME(Redis,xread,arginfo_class_Redis_xread,ZEND_ACC_PUBLIC)
17471755
ZEND_ME(Redis,xreadgroup,arginfo_class_Redis_xreadgroup,ZEND_ACC_PUBLIC)
17481756
ZEND_ME(Redis,xrevrange,arginfo_class_Redis_xrevrange,ZEND_ACC_PUBLIC)
1757+
ZEND_ME(Redis,vadd,arginfo_class_Redis_vadd,ZEND_ACC_PUBLIC)
17491758
ZEND_ME(Redis,xtrim,arginfo_class_Redis_xtrim,ZEND_ACC_PUBLIC)
17501759
ZEND_ME(Redis,zAdd,arginfo_class_Redis_zAdd,ZEND_ACC_PUBLIC)
17511760
ZEND_ME(Redis,zCard,arginfo_class_Redis_zCard,ZEND_ACC_PUBLIC)

‎redis_cluster.c‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3062,6 +3062,10 @@ PHP_METHOD(RedisCluster, ping) {
30623062
}
30633063
/* }}} */
30643064

3065+
PHP_METHOD(RedisCluster,vadd) {
3066+
CLUSTER_PROCESS_CMD(vadd,cluster_long_resp,0);
3067+
}
3068+
30653069
/* {{{ proto long RedisCluster::xack(string key, string group, array ids) }}} */
30663070
PHP_METHOD(RedisCluster,xack) {
30673071
CLUSTER_PROCESS_CMD(xack,cluster_long_resp,0);

‎redis_cluster.stub.php‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,11 @@ public function unwatch(): bool;
10531053
*/
10541054
publicfunctionwatch(string$key,string ...$other_keys):RedisCluster|bool;
10551055

1056+
/**
1057+
* @see Redis::vadd
1058+
*/
1059+
publicfunctionvadd(string$key,array$values,mixed$element,array|null$options =null):RedisCluster|int|false;
1060+
10561061
/**
10571062
* @see Redis::xack
10581063
*/

‎redis_cluster_arginfo.h‎

Lines changed: 10 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:1f8bef24632ec9819f53aa3bc9a52fe6e85b25b9 */
2+
* Stub hash:bf0af294cda503416023a575efc55ea054fbb456 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct,0,0,1)
55
ZEND_ARG_TYPE_INFO(0,name,IS_STRING,1)
@@ -874,6 +874,13 @@ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_watch, 0,
874874
ZEND_ARG_VARIADIC_TYPE_INFO(0,other_keys,IS_STRING,0)
875875
ZEND_END_ARG_INFO()
876876

877+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_vadd,0,3,RedisCluster,MAY_BE_LONG|MAY_BE_FALSE)
878+
ZEND_ARG_TYPE_INFO(0,key,IS_STRING,0)
879+
ZEND_ARG_TYPE_INFO(0,values,IS_ARRAY,0)
880+
ZEND_ARG_TYPE_INFO(0,element,IS_MIXED,0)
881+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0,options,IS_ARRAY,1,"null")
882+
ZEND_END_ARG_INFO()
883+
877884
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_xack,0,3,RedisCluster,MAY_BE_LONG|MAY_BE_FALSE)
878885
ZEND_ARG_TYPE_INFO(0,key,IS_STRING,0)
879886
ZEND_ARG_TYPE_INFO(0,group,IS_STRING,0)
@@ -1308,6 +1315,7 @@ ZEND_METHOD(RedisCluster, unsubscribe);
13081315
ZEND_METHOD(RedisCluster,unlink);
13091316
ZEND_METHOD(RedisCluster,unwatch);
13101317
ZEND_METHOD(RedisCluster,watch);
1318+
ZEND_METHOD(RedisCluster,vadd);
13111319
ZEND_METHOD(RedisCluster,xack);
13121320
ZEND_METHOD(RedisCluster,xadd);
13131321
ZEND_METHOD(RedisCluster,xclaim);
@@ -1551,6 +1559,7 @@ static const zend_function_entry class_RedisCluster_methods[] = {
15511559
ZEND_ME(RedisCluster,unlink,arginfo_class_RedisCluster_unlink,ZEND_ACC_PUBLIC)
15521560
ZEND_ME(RedisCluster,unwatch,arginfo_class_RedisCluster_unwatch,ZEND_ACC_PUBLIC)
15531561
ZEND_ME(RedisCluster,watch,arginfo_class_RedisCluster_watch,ZEND_ACC_PUBLIC)
1562+
ZEND_ME(RedisCluster,vadd,arginfo_class_RedisCluster_vadd,ZEND_ACC_PUBLIC)
15541563
ZEND_ME(RedisCluster,xack,arginfo_class_RedisCluster_xack,ZEND_ACC_PUBLIC)
15551564
ZEND_ME(RedisCluster,xadd,arginfo_class_RedisCluster_xadd,ZEND_ACC_PUBLIC)
15561565
ZEND_ME(RedisCluster,xclaim,arginfo_class_RedisCluster_xclaim,ZEND_ACC_PUBLIC)

‎redis_cluster_legacy_arginfo.h‎

Lines changed: 10 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:1f8bef24632ec9819f53aa3bc9a52fe6e85b25b9 */
2+
* Stub hash:bf0af294cda503416023a575efc55ea054fbb456 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct,0,0,1)
55
ZEND_ARG_INFO(0,name)
@@ -740,6 +740,13 @@ ZEND_END_ARG_INFO()
740740

741741
#definearginfo_class_RedisCluster_watch arginfo_class_RedisCluster_del
742742

743+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_vadd,0,0,3)
744+
ZEND_ARG_INFO(0,key)
745+
ZEND_ARG_INFO(0,values)
746+
ZEND_ARG_INFO(0,element)
747+
ZEND_ARG_INFO(0,options)
748+
ZEND_END_ARG_INFO()
749+
743750
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_xack,0,0,3)
744751
ZEND_ARG_INFO(0,key)
745752
ZEND_ARG_INFO(0,group)
@@ -1146,6 +1153,7 @@ ZEND_METHOD(RedisCluster, unsubscribe);
11461153
ZEND_METHOD(RedisCluster,unlink);
11471154
ZEND_METHOD(RedisCluster,unwatch);
11481155
ZEND_METHOD(RedisCluster,watch);
1156+
ZEND_METHOD(RedisCluster,vadd);
11491157
ZEND_METHOD(RedisCluster,xack);
11501158
ZEND_METHOD(RedisCluster,xadd);
11511159
ZEND_METHOD(RedisCluster,xclaim);
@@ -1389,6 +1397,7 @@ static const zend_function_entry class_RedisCluster_methods[] = {
13891397
ZEND_ME(RedisCluster,unlink,arginfo_class_RedisCluster_unlink,ZEND_ACC_PUBLIC)
13901398
ZEND_ME(RedisCluster,unwatch,arginfo_class_RedisCluster_unwatch,ZEND_ACC_PUBLIC)
13911399
ZEND_ME(RedisCluster,watch,arginfo_class_RedisCluster_watch,ZEND_ACC_PUBLIC)
1400+
ZEND_ME(RedisCluster,vadd,arginfo_class_RedisCluster_vadd,ZEND_ACC_PUBLIC)
13921401
ZEND_ME(RedisCluster,xack,arginfo_class_RedisCluster_xack,ZEND_ACC_PUBLIC)
13931402
ZEND_ME(RedisCluster,xadd,arginfo_class_RedisCluster_xadd,ZEND_ACC_PUBLIC)
13941403
ZEND_ME(RedisCluster,xclaim,arginfo_class_RedisCluster_xclaim,ZEND_ACC_PUBLIC)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp