diff --git a/src/module.c b/src/module.c index b3b9c44cb..7430fb70a 100644 --- a/src/module.c +++ b/src/module.c @@ -2962,6 +2962,14 @@ int RM_StringCompare(const RedisModuleString *a, const RedisModuleString *b) { return compareStringObjects(a,b); } +/* Equal two string objects, return 1 if a and b are the same from the + * point of view of a string comparison, otherwise 0 is returned. Note that + * this function is faster than checking for (RM_StringCompare(a,b) == 0) + * because it can perform some more optimization. */ +int RM_EqualString(const RedisModuleString *a, const RedisModuleString *b) { + return equalStringObjects(a,b); +} + /* Return the (possibly modified in encoding) input 'str' object if * the string is unshared, otherwise NULL is returned. */ RedisModuleString *moduleAssertUnsharedString(RedisModuleString *str) { @@ -14677,6 +14685,7 @@ void moduleRegisterCoreAPI(void) { REGISTER_API(RetainString); REGISTER_API(HoldString); REGISTER_API(StringCompare); + REGISTER_API(EqualString); REGISTER_API(GetContextFromIO); REGISTER_API(GetKeyNameFromIO); REGISTER_API(GetKeyNameFromModuleKey); diff --git a/src/redismodule.h b/src/redismodule.h index 2a0f272a5..ac0993419 100644 --- a/src/redismodule.h +++ b/src/redismodule.h @@ -1158,6 +1158,7 @@ REDISMODULE_API void (*RedisModule_TrimStringAllocation)(RedisModuleString *str) REDISMODULE_API void (*RedisModule_RetainString)(RedisModuleCtx *ctx, RedisModuleString *str) REDISMODULE_ATTR; REDISMODULE_API RedisModuleString * (*RedisModule_HoldString)(RedisModuleCtx *ctx, RedisModuleString *str) REDISMODULE_ATTR; REDISMODULE_API int (*RedisModule_StringCompare)(const RedisModuleString *a, const RedisModuleString *b) REDISMODULE_ATTR; +REDISMODULE_API int (*RedisModule_EqualString)(const RedisModuleString *a, const RedisModuleString *b) REDISMODULE_ATTR; REDISMODULE_API RedisModuleCtx * (*RedisModule_GetContextFromIO)(RedisModuleIO *io) REDISMODULE_ATTR; REDISMODULE_API const RedisModuleString * (*RedisModule_GetKeyNameFromIO)(RedisModuleIO *io) REDISMODULE_ATTR; REDISMODULE_API const RedisModuleString * (*RedisModule_GetKeyNameFromModuleKey)(RedisModuleKey *key) REDISMODULE_ATTR; @@ -1540,6 +1541,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int REDISMODULE_GET_API(RetainString); REDISMODULE_GET_API(HoldString); REDISMODULE_GET_API(StringCompare); + REDISMODULE_GET_API(EqualString); REDISMODULE_GET_API(GetContextFromIO); REDISMODULE_GET_API(GetKeyNameFromIO); REDISMODULE_GET_API(GetKeyNameFromModuleKey);