Skip to content
This repository was archived by the owner on Jul 24, 2019. It is now read-only.

Commit 7b368a0

Browse files
committed
Added SETRANGE, missing doc and tests.
1 parent c8a60a1 commit 7b368a0

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

php_redis.h

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ PHP_METHOD(Redis, decrBy);
4646
PHP_METHOD(Redis, type);
4747
PHP_METHOD(Redis, append);
4848
PHP_METHOD(Redis, getRange);
49+
PHP_METHOD(Redis, setRange);
4950
PHP_METHOD(Redis, strlen);
5051
PHP_METHOD(Redis, getKeys);
5152
PHP_METHOD(Redis, sort);

redis.c

+27
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ static zend_function_entry redis_functions[] = {
7070
PHP_ME(Redis, type, NULL, ZEND_ACC_PUBLIC)
7171
PHP_ME(Redis, append, NULL, ZEND_ACC_PUBLIC)
7272
PHP_ME(Redis, getRange, NULL, ZEND_ACC_PUBLIC)
73+
PHP_ME(Redis, setRange, NULL, ZEND_ACC_PUBLIC)
7374
PHP_ME(Redis, strlen, NULL, ZEND_ACC_PUBLIC)
7475
PHP_ME(Redis, getKeys, NULL, ZEND_ACC_PUBLIC)
7576
PHP_ME(Redis, sort, NULL, ZEND_ACC_PUBLIC)
@@ -1127,6 +1128,32 @@ PHP_METHOD(Redis, getRange)
11271128
REDIS_PROCESS_RESPONSE(redis_string_response);
11281129
}
11291130

1131+
PHP_METHOD(Redis, setRange)
1132+
{
1133+
zval *object;
1134+
RedisSock *redis_sock;
1135+
char *key = NULL, *val, *cmd;
1136+
int key_len, val_len, cmd_len;
1137+
long offset;
1138+
1139+
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Osls",
1140+
&object, redis_ce, &key, &key_len,
1141+
&offset, &val, &val_len) == FAILURE) {
1142+
RETURN_FALSE;
1143+
}
1144+
1145+
if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) {
1146+
RETURN_FALSE;
1147+
}
1148+
1149+
cmd_len = redis_cmd_format_static(&cmd, "SETRANGE", "sds", key, key_len, (int)offset, val, val_len);
1150+
REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len);
1151+
IF_ATOMIC() {
1152+
redis_long_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL, NULL);
1153+
}
1154+
REDIS_PROCESS_RESPONSE(redis_long_response);
1155+
}
1156+
11301157
PHP_METHOD(Redis, strlen)
11311158
{
11321159
zval *object;

0 commit comments

Comments
 (0)