@@ -22,7 +22,7 @@ extern "C" {
2222
2323/* Version of the RedisModuleTypeMethods structure. Once the RedisModuleTypeMethods
2424 * structure is changed, this version number needs to be changed synchronistically. */
25- #define REDISMODULE_TYPE_METHOD_VERSION 3
25+ #define REDISMODULE_TYPE_METHOD_VERSION 4
2626
2727/* API flags and constants */
2828#define REDISMODULE_READ (1<<0)
@@ -526,6 +526,7 @@ typedef struct RedisModuleServerInfoData RedisModuleServerInfoData;
526526typedef struct RedisModuleScanCursor RedisModuleScanCursor ;
527527typedef struct RedisModuleDefragCtx RedisModuleDefragCtx ;
528528typedef struct RedisModuleUser RedisModuleUser ;
529+ typedef struct RedisModuleKeyOptCtx RedisModuleKeyOptCtx ;
529530
530531typedef int (* RedisModuleCmdFunc )(RedisModuleCtx * ctx , RedisModuleString * * argv , int argc );
531532typedef void (* RedisModuleDisconnectFunc )(RedisModuleCtx * ctx , RedisModuleBlockedClient * bc );
@@ -536,11 +537,15 @@ typedef int (*RedisModuleTypeAuxLoadFunc)(RedisModuleIO *rdb, int encver, int wh
536537typedef void (* RedisModuleTypeAuxSaveFunc )(RedisModuleIO * rdb , int when );
537538typedef void (* RedisModuleTypeRewriteFunc )(RedisModuleIO * aof , RedisModuleString * key , void * value );
538539typedef size_t (* RedisModuleTypeMemUsageFunc )(const void * value );
540+ typedef size_t (* RedisModuleTypeMemUsageFunc2 )(RedisModuleKeyOptCtx * ctx , const void * value );
539541typedef void (* RedisModuleTypeDigestFunc )(RedisModuleDigest * digest , void * value );
540542typedef void (* RedisModuleTypeFreeFunc )(void * value );
541543typedef size_t (* RedisModuleTypeFreeEffortFunc )(RedisModuleString * key , const void * value );
544+ typedef size_t (* RedisModuleTypeFreeEffortFunc2 )(RedisModuleKeyOptCtx * ctx , const void * value );
542545typedef void (* RedisModuleTypeUnlinkFunc )(RedisModuleString * key , const void * value );
546+ typedef void (* RedisModuleTypeUnlinkFunc2 )(RedisModuleKeyOptCtx * ctx , const void * value );
543547typedef void * (* RedisModuleTypeCopyFunc )(RedisModuleString * fromkey , RedisModuleString * tokey , const void * value );
548+ typedef void * (* RedisModuleTypeCopyFunc2 )(RedisModuleKeyOptCtx * ctx , const void * value );
544549typedef int (* RedisModuleTypeDefragFunc )(RedisModuleDefragCtx * ctx , RedisModuleString * key , void * * value );
545550typedef void (* RedisModuleClusterMessageReceiver )(RedisModuleCtx * ctx , const char * sender_id , uint8_t type , const unsigned char * payload , uint32_t len );
546551typedef void (* RedisModuleTimerProc )(RedisModuleCtx * ctx , void * data );
@@ -567,6 +572,10 @@ typedef struct RedisModuleTypeMethods {
567572 RedisModuleTypeUnlinkFunc unlink ;
568573 RedisModuleTypeCopyFunc copy ;
569574 RedisModuleTypeDefragFunc defrag ;
575+ RedisModuleTypeMemUsageFunc2 mem_usage2 ;
576+ RedisModuleTypeFreeEffortFunc2 free_effort2 ;
577+ RedisModuleTypeUnlinkFunc2 unlink2 ;
578+ RedisModuleTypeCopyFunc2 copy2 ;
570579} RedisModuleTypeMethods ;
571580
572581#define REDISMODULE_GET_API (name ) \
@@ -726,10 +735,18 @@ REDISMODULE_API int (*RedisModule_StringCompare)(RedisModuleString *a, RedisModu
726735REDISMODULE_API RedisModuleCtx * (* RedisModule_GetContextFromIO )(RedisModuleIO * io ) REDISMODULE_ATTR ;
727736REDISMODULE_API const RedisModuleString * (* RedisModule_GetKeyNameFromIO )(RedisModuleIO * io ) REDISMODULE_ATTR ;
728737REDISMODULE_API const RedisModuleString * (* RedisModule_GetKeyNameFromModuleKey )(RedisModuleKey * key ) REDISMODULE_ATTR ;
738+ REDISMODULE_API int (* RedisModule_GetDbIdFromModuleKey )(RedisModuleKey * key ) REDISMODULE_ATTR ;
739+ REDISMODULE_API int (* RedisModule_GetDbIdFromIO )(RedisModuleIO * io ) REDISMODULE_ATTR ;
740+ REDISMODULE_API int (* RedisModule_GetDbIdFromOptCtx )(RedisModuleKeyOptCtx * ctx ) REDISMODULE_ATTR ;
741+ REDISMODULE_API int (* RedisModule_GetToDbIdFromOptCtx )(RedisModuleKeyOptCtx * ctx ) REDISMODULE_ATTR ;
742+ REDISMODULE_API const RedisModuleString * (* RedisModule_GetKeyNameFromOptCtx )(RedisModuleKeyOptCtx * ctx ) REDISMODULE_ATTR ;
743+ REDISMODULE_API const RedisModuleString * (* RedisModule_GetToKeyNameFromOptCtx )(RedisModuleKeyOptCtx * ctx ) REDISMODULE_ATTR ;
729744REDISMODULE_API long long (* RedisModule_Milliseconds )(void ) REDISMODULE_ATTR ;
730745REDISMODULE_API void (* RedisModule_DigestAddStringBuffer )(RedisModuleDigest * md , unsigned char * ele , size_t len ) REDISMODULE_ATTR ;
731746REDISMODULE_API void (* RedisModule_DigestAddLongLong )(RedisModuleDigest * md , long long ele ) REDISMODULE_ATTR ;
732747REDISMODULE_API void (* RedisModule_DigestEndSequence )(RedisModuleDigest * md ) REDISMODULE_ATTR ;
748+ REDISMODULE_API int (* RedisModule_GetDbIdFromDigest )(RedisModuleDigest * dig ) REDISMODULE_ATTR ;
749+ REDISMODULE_API const RedisModuleString * (* RedisModule_GetKeyNameFromDigest )(RedisModuleDigest * dig ) REDISMODULE_ATTR ;
733750REDISMODULE_API RedisModuleDict * (* RedisModule_CreateDict )(RedisModuleCtx * ctx ) REDISMODULE_ATTR ;
734751REDISMODULE_API void (* RedisModule_FreeDict )(RedisModuleCtx * ctx , RedisModuleDict * d ) REDISMODULE_ATTR ;
735752REDISMODULE_API uint64_t (* RedisModule_DictSize )(RedisModuleDict * d ) REDISMODULE_ATTR ;
@@ -846,12 +863,15 @@ REDISMODULE_API int (*RedisModule_AuthenticateClientWithUser)(RedisModuleCtx *ct
846863REDISMODULE_API int (* RedisModule_DeauthenticateAndCloseClient )(RedisModuleCtx * ctx , uint64_t client_id ) REDISMODULE_ATTR ;
847864REDISMODULE_API RedisModuleString * (* RedisModule_GetClientCertificate )(RedisModuleCtx * ctx , uint64_t id ) REDISMODULE_ATTR ;
848865REDISMODULE_API int * (* RedisModule_GetCommandKeys )(RedisModuleCtx * ctx , RedisModuleString * * argv , int argc , int * num_keys ) REDISMODULE_ATTR ;
866+ REDISMODULE_API const char * (* RedisModule_GetCurrentCommandName )(RedisModuleCtx * ctx ) REDISMODULE_ATTR ;
849867REDISMODULE_API int (* RedisModule_RegisterDefragFunc )(RedisModuleCtx * ctx , RedisModuleDefragFunc func ) REDISMODULE_ATTR ;
850868REDISMODULE_API void * (* RedisModule_DefragAlloc )(RedisModuleDefragCtx * ctx , void * ptr ) REDISMODULE_ATTR ;
851869REDISMODULE_API RedisModuleString * (* RedisModule_DefragRedisModuleString )(RedisModuleDefragCtx * ctx , RedisModuleString * str ) REDISMODULE_ATTR ;
852870REDISMODULE_API int (* RedisModule_DefragShouldStop )(RedisModuleDefragCtx * ctx ) REDISMODULE_ATTR ;
853871REDISMODULE_API int (* RedisModule_DefragCursorSet )(RedisModuleDefragCtx * ctx , unsigned long cursor ) REDISMODULE_ATTR ;
854872REDISMODULE_API int (* RedisModule_DefragCursorGet )(RedisModuleDefragCtx * ctx , unsigned long * cursor ) REDISMODULE_ATTR ;
873+ REDISMODULE_API int (* RedisModule_GetDbIdFromDefragCtx )(RedisModuleDefragCtx * ctx ) REDISMODULE_ATTR ;
874+ REDISMODULE_API const RedisModuleString * (* RedisModule_GetKeyNameFromDefragCtx )(RedisModuleDefragCtx * ctx ) REDISMODULE_ATTR ;
855875#endif
856876
857877#define RedisModule_IsAOFClient (id ) ((id ) == UINT64_MAX )
@@ -998,10 +1018,18 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
9981018 REDISMODULE_GET_API (GetContextFromIO );
9991019 REDISMODULE_GET_API (GetKeyNameFromIO );
10001020 REDISMODULE_GET_API (GetKeyNameFromModuleKey );
1021+ REDISMODULE_GET_API (GetDbIdFromModuleKey );
1022+ REDISMODULE_GET_API (GetDbIdFromIO );
1023+ REDISMODULE_GET_API (GetKeyNameFromOptCtx );
1024+ REDISMODULE_GET_API (GetToKeyNameFromOptCtx );
1025+ REDISMODULE_GET_API (GetDbIdFromOptCtx );
1026+ REDISMODULE_GET_API (GetToDbIdFromOptCtx );
10011027 REDISMODULE_GET_API (Milliseconds );
10021028 REDISMODULE_GET_API (DigestAddStringBuffer );
10031029 REDISMODULE_GET_API (DigestAddLongLong );
10041030 REDISMODULE_GET_API (DigestEndSequence );
1031+ REDISMODULE_GET_API (GetKeyNameFromDigest );
1032+ REDISMODULE_GET_API (GetDbIdFromDigest );
10051033 REDISMODULE_GET_API (CreateDict );
10061034 REDISMODULE_GET_API (FreeDict );
10071035 REDISMODULE_GET_API (DictSize );
@@ -1118,12 +1146,15 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
11181146 REDISMODULE_GET_API (AuthenticateClientWithUser );
11191147 REDISMODULE_GET_API (GetClientCertificate );
11201148 REDISMODULE_GET_API (GetCommandKeys );
1149+ REDISMODULE_GET_API (GetCurrentCommandName );
11211150 REDISMODULE_GET_API (RegisterDefragFunc );
11221151 REDISMODULE_GET_API (DefragAlloc );
11231152 REDISMODULE_GET_API (DefragRedisModuleString );
11241153 REDISMODULE_GET_API (DefragShouldStop );
11251154 REDISMODULE_GET_API (DefragCursorSet );
11261155 REDISMODULE_GET_API (DefragCursorGet );
1156+ REDISMODULE_GET_API (GetKeyNameFromDefragCtx );
1157+ REDISMODULE_GET_API (GetDbIdFromDefragCtx );
11271158#endif
11281159
11291160 if (RedisModule_IsModuleNameBusy && RedisModule_IsModuleNameBusy (name )) return REDISMODULE_ERR ;
0 commit comments