@@ -46,7 +46,7 @@ typedef long long ustime_t;
4646/* API versions. */
4747#define REDISMODULE_APIVER_1 1
4848
49- /* Version of the RedisModuleTypeMethods structure. Once the RedisModuleTypeMethods
49+ /* Version of the RedisModuleTypeMethods structure. Once the RedisModuleTypeMethods
5050 * structure is changed, this version number needs to be changed synchronistically. */
5151#define REDISMODULE_TYPE_METHOD_VERSION 5
5252
@@ -67,11 +67,14 @@ typedef long long ustime_t;
6767#define REDISMODULE_OPEN_KEY_NOEFFECTS (1<<20)
6868/* Allow access expired key that haven't deleted yet */
6969#define REDISMODULE_OPEN_KEY_ACCESS_EXPIRED (1<<21)
70+ /* Allow access trimmed key that haven't deleted yet */
71+ #define REDISMODULE_OPEN_KEY_ACCESS_TRIMMED (1<<22)
72+
7073
7174/* Mask of all REDISMODULE_OPEN_KEY_* values. Any new mode should be added to this list.
7275 * Should not be used directly by the module, use RM_GetOpenKeyModesAll instead.
7376 * Located here so when we will add new modes we will not forget to update it. */
74- #define _REDISMODULE_OPEN_KEY_ALL REDISMODULE_READ | REDISMODULE_WRITE | REDISMODULE_OPEN_KEY_NOTOUCH | REDISMODULE_OPEN_KEY_NONOTIFY | REDISMODULE_OPEN_KEY_NOSTATS | REDISMODULE_OPEN_KEY_NOEXPIRE | REDISMODULE_OPEN_KEY_NOEFFECTS | REDISMODULE_OPEN_KEY_ACCESS_EXPIRED
77+ #define _REDISMODULE_OPEN_KEY_ALL REDISMODULE_READ | REDISMODULE_WRITE | REDISMODULE_OPEN_KEY_NOTOUCH | REDISMODULE_OPEN_KEY_NONOTIFY | REDISMODULE_OPEN_KEY_NOSTATS | REDISMODULE_OPEN_KEY_NOEXPIRE | REDISMODULE_OPEN_KEY_NOEFFECTS | REDISMODULE_OPEN_KEY_ACCESS_EXPIRED | REDISMODULE_OPEN_KEY_ACCESS_TRIMMED
7578
7679/* List push and pop */
7780#define REDISMODULE_LIST_HEAD 0
@@ -126,7 +129,7 @@ typedef long long ustime_t;
126129#define REDISMODULE_HASH_CFIELDS (1<<2)
127130#define REDISMODULE_HASH_EXISTS (1<<3)
128131#define REDISMODULE_HASH_COUNT_ALL (1<<4)
129- #define REDISMODULE_HASH_EXPIRE_TIME (1<<5)
132+ #define REDISMODULE_HASH_EXPIRE_TIME (1<<5)
130133
131134#define REDISMODULE_CONFIG_DEFAULT 0 /* This is the default for a module config. */
132135#define REDISMODULE_CONFIG_IMMUTABLE (1ULL<<0) /* Can this value only be set at startup? */
@@ -215,11 +218,13 @@ typedef struct RedisModuleStreamID {
215218#define REDISMODULE_CTX_FLAGS_SERVER_STARTUP (1<<24)
216219/* This context can call execute debug commands. */
217220#define REDISMODULE_CTX_FLAGS_DEBUG_ENABLED (1<<25)
221+ /* Trim is in progress due to slot migration. */
222+ #define REDISMODULE_CTX_TRIM_IN_PROGRESS (1<<26)
218223
219224/* Next context flag, must be updated when adding new flags above!
220225This flag should not be used directly by the module.
221226 * Use RedisModule_GetContextFlagsAll instead. */
222- #define _REDISMODULE_CTX_FLAGS_NEXT (1<<26 )
227+ #define _REDISMODULE_CTX_FLAGS_NEXT (1<<27 )
223228
224229/* Keyspace changes notification classes. Every class is associated with a
225230 * character for configuration purposes.
@@ -272,6 +277,7 @@ This flag should not be used directly by the module.
272277#define REDISMODULE_CLUSTER_FLAG_NONE 0
273278#define REDISMODULE_CLUSTER_FLAG_NO_FAILOVER (1<<1)
274279#define REDISMODULE_CLUSTER_FLAG_NO_REDIRECTION (1<<2)
280+ #define REDISMODULE_CLUSTER_FLAG_NO_TRIM (1<<3)
275281
276282#define REDISMODULE_NOT_USED (V ) ((void) V)
277283
@@ -515,7 +521,8 @@ typedef void (*RedisModuleEventLoopOneShotFunc)(void *user_data);
515521#define REDISMODULE_EVENT_KEY 17
516522#define REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION 18
517523#define REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION_TRIM 19
518- #define _REDISMODULE_EVENT_NEXT 20 /* Next event flag, should be updated if a new event added. */
524+ #define REDISMODULE_EVENT_CLUSTER_UNOWNEDKEYS 20
525+ #define _REDISMODULE_EVENT_NEXT 21 /* Next event flag, should be updated if a new event added. */
519526
520527typedef struct RedisModuleEvent {
521528 uint64_t id ; /* REDISMODULE_EVENT_... defines. */
@@ -604,7 +611,7 @@ static const RedisModuleEvent
604611 /* Deprecated since Redis 7.0, not used anymore. */
605612 __attribute__ ( (deprecated ))
606613 RedisModuleEvent_ReplBackup = {
607- REDISMODULE_EVENT_REPL_BACKUP ,
614+ REDISMODULE_EVENT_REPL_BACKUP ,
608615 1
609616 },
610617 RedisModuleEvent_ReplAsyncLoad = {
@@ -634,6 +641,10 @@ static const RedisModuleEvent
634641 RedisModuleEvent_ClusterSlotMigrationTrim = {
635642 REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION_TRIM ,
636643 1
644+ },
645+ RedisModuleEvent_ClusterUnownedKeys = {
646+ REDISMODULE_EVENT_CLUSTER_UNOWNEDKEYS ,
647+ 1
637648 };
638649
639650/* Those are values that are used for the 'subevent' callback argument. */
@@ -726,6 +737,10 @@ static const RedisModuleEvent
726737#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_BACKGROUND 2
727738#define _REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_NEXT 3
728739
740+ #define REDISMODULE_SUBEVENT_CLUSTER_UNOWNEDKEYS_DETECTED 0
741+ #define REDISMODULE_SUBEVENT_CLUSTER_UNOWNEDKEYS_RESOLVED 1
742+ #define _REDISMODULE_SUBEVENT_CLUSTER_UNOWNEDKEYS_NEXT 2
743+
729744/* RedisModuleClientInfo flags. */
730745#define REDISMODULE_CLIENTINFO_FLAG_SSL (1<<0)
731746#define REDISMODULE_CLIENTINFO_FLAG_PUBSUB (1<<1)
@@ -1343,6 +1358,7 @@ REDISMODULE_API void (*RedisModule_GetRandomBytes)(unsigned char *dst, size_t le
13431358REDISMODULE_API void (* RedisModule_GetRandomHexChars )(char * dst , size_t len ) REDISMODULE_ATTR ;
13441359REDISMODULE_API void (* RedisModule_SetDisconnectCallback )(RedisModuleBlockedClient * bc , RedisModuleDisconnectFunc callback ) REDISMODULE_ATTR ;
13451360REDISMODULE_API void (* RedisModule_SetClusterFlags )(RedisModuleCtx * ctx , uint64_t flags ) REDISMODULE_ATTR ;
1361+ REDISMODULE_API uint64_t (* RedisModule_GetClusterFlags )(RedisModuleCtx * ctx ) REDISMODULE_ATTR ;
13461362REDISMODULE_API unsigned int (* RedisModule_ClusterKeySlot )(RedisModuleString * key ) REDISMODULE_ATTR ;
13471363REDISMODULE_API unsigned int (* RedisModule_ClusterKeySlotC )(const char * keystr , size_t keylen ) REDISMODULE_ATTR ;
13481364REDISMODULE_API const char * (* RedisModule_ClusterCanonicalKeyNameInSlot )(unsigned int slot ) REDISMODULE_ATTR ;
@@ -1740,6 +1756,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
17401756 REDISMODULE_GET_API (GetRandomBytes );
17411757 REDISMODULE_GET_API (GetRandomHexChars );
17421758 REDISMODULE_GET_API (SetClusterFlags );
1759+ REDISMODULE_GET_API (GetClusterFlags );
17431760 REDISMODULE_GET_API (ClusterKeySlot );
17441761 REDISMODULE_GET_API (ClusterKeySlotC );
17451762 REDISMODULE_GET_API (ClusterCanonicalKeyNameInSlot );
@@ -1828,9 +1845,8 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
18281845 REDISMODULE_GET_API (ConfigSetEnum );
18291846 REDISMODULE_GET_API (ConfigSetNumeric );
18301847
1831-
18321848#ifdef REDISMODULE_RLEC_API_DEFS
1833- REDISMODULE_RLEC_API_DEFS
1849+ REDISMODULE_RLEC_API_DEFS
18341850#endif
18351851
18361852 if (RedisModule_IsModuleNameBusy && RedisModule_IsModuleNameBusy (name )) return REDISMODULE_ERR ;
0 commit comments