Skip to content

Commit 8c86457

Browse files
committed
update to latest redis version, including ASM feature
1 parent fa53ff2 commit 8c86457

File tree

1 file changed

+106
-2
lines changed

1 file changed

+106
-2
lines changed

redismodule.h

Lines changed: 106 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,11 +239,14 @@ This flag should not be used directly by the module.
239239
#define REDISMODULE_NOTIFY_LOADED (1<<12) /* module only key space notification, indicate a key loaded from rdb */
240240
#define REDISMODULE_NOTIFY_MODULE (1<<13) /* d, module key space notification */
241241
#define REDISMODULE_NOTIFY_NEW (1<<14) /* n, new key notification */
242+
#define REDISMODULE_NOTIFY_OVERWRITTEN (1<<15) /* o, key overwrite notification */
243+
#define REDISMODULE_NOTIFY_TYPE_CHANGED (1<<16) /* c, key type changed notification */
244+
#define REDISMODULE_NOTIFY_KEY_TRIMMED (1<<17) /* module only key space notification, indicates a key trimmed during slot migration */
242245

243246
/* Next notification flag, must be updated when adding new flags above!
244247
This flag should not be used directly by the module.
245248
* Use RedisModule_GetKeyspaceNotificationFlagsAll instead. */
246-
#define _REDISMODULE_NOTIFY_NEXT (1<<15)
249+
#define _REDISMODULE_NOTIFY_NEXT (1<<18)
247250

248251
#define REDISMODULE_NOTIFY_ALL (REDISMODULE_NOTIFY_GENERIC | REDISMODULE_NOTIFY_STRING | REDISMODULE_NOTIFY_LIST | REDISMODULE_NOTIFY_SET | REDISMODULE_NOTIFY_HASH | REDISMODULE_NOTIFY_ZSET | REDISMODULE_NOTIFY_EXPIRED | REDISMODULE_NOTIFY_EVICTED | REDISMODULE_NOTIFY_STREAM | REDISMODULE_NOTIFY_MODULE) /* A */
249252

@@ -510,7 +513,9 @@ typedef void (*RedisModuleEventLoopOneShotFunc)(void *user_data);
510513
#define REDISMODULE_EVENT_EVENTLOOP 15
511514
#define REDISMODULE_EVENT_CONFIG 16
512515
#define REDISMODULE_EVENT_KEY 17
513-
#define _REDISMODULE_EVENT_NEXT 18 /* Next event flag, should be updated if a new event added. */
516+
#define REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION 18
517+
#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. */
514519

515520
typedef struct RedisModuleEvent {
516521
uint64_t id; /* REDISMODULE_EVENT_... defines. */
@@ -621,6 +626,14 @@ static const RedisModuleEvent
621626
RedisModuleEvent_Key = {
622627
REDISMODULE_EVENT_KEY,
623628
1
629+
},
630+
RedisModuleEvent_ClusterSlotMigration = {
631+
REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION,
632+
1
633+
},
634+
RedisModuleEvent_ClusterSlotMigrationTrim = {
635+
REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION_TRIM,
636+
1
624637
};
625638

626639
/* Those are values that are used for the 'subevent' callback argument. */
@@ -699,6 +712,20 @@ static const RedisModuleEvent
699712
#define _REDISMODULE_SUBEVENT_CRON_LOOP_NEXT 0
700713
#define _REDISMODULE_SUBEVENT_SWAPDB_NEXT 0
701714

715+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_IMPORT_STARTED 0
716+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_IMPORT_FAILED 1
717+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_IMPORT_COMPLETED 2
718+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_MIGRATE_STARTED 3
719+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_MIGRATE_FAILED 4
720+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_MIGRATE_COMPLETED 5
721+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_MIGRATE_MODULE_PROPAGATE 6
722+
#define _REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_NEXT 7
723+
724+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_STARTED 0
725+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_COMPLETED 1
726+
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_BACKGROUND 2
727+
#define _REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_NEXT 3
728+
702729
/* RedisModuleClientInfo flags. */
703730
#define REDISMODULE_CLIENTINFO_FLAG_SSL (1<<0)
704731
#define REDISMODULE_CLIENTINFO_FLAG_PUBSUB (1<<1)
@@ -828,13 +855,55 @@ typedef struct RedisModuleKeyInfo {
828855

829856
#define RedisModuleKeyInfo RedisModuleKeyInfoV1
830857

858+
typedef struct RedisModuleSlotRange {
859+
uint16_t start;
860+
uint16_t end;
861+
} RedisModuleSlotRange;
862+
863+
typedef struct RedisModuleSlotRangeArray {
864+
int32_t num_ranges;
865+
RedisModuleSlotRange ranges[];
866+
} RedisModuleSlotRangeArray;
867+
868+
#define REDISMODULE_CLUSTER_SLOT_MIGRATION_INFO_VERSION 1
869+
870+
typedef struct RedisModuleClusterSlotMigrationInfo {
871+
uint64_t version; /* Not used since this structure is never passed
872+
from the module to the core right now. Here
873+
for future compatibility. */
874+
char source_node_id[REDISMODULE_NODE_ID_LEN + 1];
875+
char destination_node_id[REDISMODULE_NODE_ID_LEN + 1];
876+
const char *task_id;
877+
RedisModuleSlotRangeArray *slots;
878+
} RedisModuleClusterSlotMigrationInfoV1;
879+
880+
#define RedisModuleClusterSlotMigrationInfo RedisModuleClusterSlotMigrationInfoV1
881+
882+
#define REDISMODULE_CLUSTER_SLOT_MIGRATION_TRIMINFO_VERSION 1
883+
884+
typedef struct RedisModuleClusterSlotMigrationTrimInfo {
885+
uint64_t version; /* Not used since this structure is never passed
886+
from the module to the core right now. Here
887+
for future compatibility. */
888+
RedisModuleSlotRangeArray *slots;
889+
} RedisModuleClusterSlotMigrationTrimInfoV1;
890+
891+
#define RedisModuleClusterSlotMigrationTrimInfo RedisModuleClusterSlotMigrationTrimInfoV1
892+
831893
typedef enum {
832894
REDISMODULE_ACL_LOG_AUTH = 0, /* Authentication failure */
833895
REDISMODULE_ACL_LOG_CMD, /* Command authorization failure */
834896
REDISMODULE_ACL_LOG_KEY, /* Key authorization failure */
835897
REDISMODULE_ACL_LOG_CHANNEL /* Channel authorization failure */
836898
} RedisModuleACLLogEntryReason;
837899

900+
typedef enum {
901+
REDISMODULE_CONFIG_TYPE_STRING = 0,
902+
REDISMODULE_CONFIG_TYPE_ENUM,
903+
REDISMODULE_CONFIG_TYPE_NUMERIC,
904+
REDISMODULE_CONFIG_TYPE_BOOL,
905+
} RedisModuleConfigType;
906+
838907
/* Incomplete structures needed by both the core and modules. */
839908
typedef struct RedisModuleIO RedisModuleIO;
840909
typedef struct RedisModuleDigest RedisModuleDigest;
@@ -896,6 +965,7 @@ typedef struct RedisModuleScanCursor RedisModuleScanCursor;
896965
typedef struct RedisModuleUser RedisModuleUser;
897966
typedef struct RedisModuleKeyOptCtx RedisModuleKeyOptCtx;
898967
typedef struct RedisModuleRdbStream RedisModuleRdbStream;
968+
typedef struct RedisModuleConfigIterator RedisModuleConfigIterator;
899969

900970
typedef int (*RedisModuleCmdFunc)(RedisModuleCtx *ctx, RedisModuleString **argv, int argc);
901971
typedef void (*RedisModuleDisconnectFunc)(RedisModuleCtx *ctx, RedisModuleBlockedClient *bc);
@@ -1254,6 +1324,7 @@ REDISMODULE_API void (*RedisModule_ThreadSafeContextLock)(RedisModuleCtx *ctx) R
12541324
REDISMODULE_API int (*RedisModule_ThreadSafeContextTryLock)(RedisModuleCtx *ctx) REDISMODULE_ATTR;
12551325
REDISMODULE_API void (*RedisModule_ThreadSafeContextUnlock)(RedisModuleCtx *ctx) REDISMODULE_ATTR;
12561326
REDISMODULE_API int (*RedisModule_SubscribeToKeyspaceEvents)(RedisModuleCtx *ctx, int types, RedisModuleNotificationFunc cb) REDISMODULE_ATTR;
1327+
REDISMODULE_API int (*RedisModule_UnsubscribeFromKeyspaceEvents)(RedisModuleCtx *ctx, int types, RedisModuleNotificationFunc cb) REDISMODULE_ATTR;
12571328
REDISMODULE_API int (*RedisModule_AddPostNotificationJob)(RedisModuleCtx *ctx, RedisModulePostNotificationJobFunc callback, void *pd, void (*free_pd)(void*)) REDISMODULE_ATTR;
12581329
REDISMODULE_API int (*RedisModule_NotifyKeyspaceEvent)(RedisModuleCtx *ctx, int type, const char *event, RedisModuleString *key) REDISMODULE_ATTR;
12591330
REDISMODULE_API int (*RedisModule_GetNotifyKeyspaceEvents)(void) REDISMODULE_ATTR;
@@ -1275,6 +1346,10 @@ REDISMODULE_API void (*RedisModule_SetClusterFlags)(RedisModuleCtx *ctx, uint64_
12751346
REDISMODULE_API unsigned int (*RedisModule_ClusterKeySlot)(RedisModuleString *key) REDISMODULE_ATTR;
12761347
REDISMODULE_API unsigned int (*RedisModule_ClusterKeySlotC)(const char *keystr, size_t keylen) REDISMODULE_ATTR;
12771348
REDISMODULE_API const char *(*RedisModule_ClusterCanonicalKeyNameInSlot)(unsigned int slot) REDISMODULE_ATTR;
1349+
REDISMODULE_API int (*RedisModule_ClusterCanAccessKeysInSlot)(int slot) REDISMODULE_ATTR;
1350+
REDISMODULE_API int (*RedisModule_ClusterPropagateForSlotMigration)(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...) REDISMODULE_ATTR;
1351+
REDISMODULE_API RedisModuleSlotRangeArray *(*RedisModule_ClusterGetLocalSlotRanges)(RedisModuleCtx *ctx) REDISMODULE_ATTR;
1352+
REDISMODULE_API void (*RedisModule_ClusterFreeSlotRanges)(RedisModuleCtx *ctx, RedisModuleSlotRangeArray *slots) REDISMODULE_ATTR;
12781353
REDISMODULE_API int (*RedisModule_ExportSharedAPI)(RedisModuleCtx *ctx, const char *apiname, void *func) REDISMODULE_ATTR;
12791354
REDISMODULE_API void * (*RedisModule_GetSharedAPI)(RedisModuleCtx *ctx, const char *apiname) REDISMODULE_ATTR;
12801355
REDISMODULE_API RedisModuleCommandFilter * (*RedisModule_RegisterCommandFilter)(RedisModuleCtx *ctx, RedisModuleCommandFilterFunc cb, int flags) REDISMODULE_ATTR;
@@ -1343,6 +1418,18 @@ REDISMODULE_API void (*RedisModule_RdbStreamFree)(RedisModuleRdbStream *stream)
13431418
REDISMODULE_API int (*RedisModule_RdbLoad)(RedisModuleCtx *ctx, RedisModuleRdbStream *stream, int flags) REDISMODULE_ATTR;
13441419
REDISMODULE_API int (*RedisModule_RdbSave)(RedisModuleCtx *ctx, RedisModuleRdbStream *stream, int flags) REDISMODULE_ATTR;
13451420
REDISMODULE_API const char * (*RedisModule_GetInternalSecret)(RedisModuleCtx *ctx, size_t *len) REDISMODULE_ATTR;
1421+
REDISMODULE_API RedisModuleConfigIterator * (*RedisModule_ConfigIteratorCreate)(RedisModuleCtx *ctx, const char *pattern) REDISMODULE_ATTR;
1422+
REDISMODULE_API void (*RedisModule_ConfigIteratorRelease)(RedisModuleCtx *ctx, RedisModuleConfigIterator *iter) REDISMODULE_ATTR;
1423+
REDISMODULE_API const char * (*RedisModule_ConfigIteratorNext)(RedisModuleConfigIterator *iter) REDISMODULE_ATTR;
1424+
REDISMODULE_API int (*RedisModule_ConfigGetType)(const char *name, RedisModuleConfigType *res) REDISMODULE_ATTR;
1425+
REDISMODULE_API int (*RedisModule_ConfigGet)(RedisModuleCtx *ctx, const char *name, RedisModuleString **res) REDISMODULE_ATTR;
1426+
REDISMODULE_API int (*RedisModule_ConfigGetBool)(RedisModuleCtx *ctx, const char *name, int *res) REDISMODULE_ATTR;
1427+
REDISMODULE_API int (*RedisModule_ConfigGetEnum)(RedisModuleCtx *ctx, const char *name, RedisModuleString **res) REDISMODULE_ATTR;
1428+
REDISMODULE_API int (*RedisModule_ConfigGetNumeric)(RedisModuleCtx *ctx, const char *name, long long *res) REDISMODULE_ATTR;
1429+
REDISMODULE_API int (*RedisModule_ConfigSet)(RedisModuleCtx *ctx, const char *name, RedisModuleString *value, RedisModuleString **err) REDISMODULE_ATTR;
1430+
REDISMODULE_API int (*RedisModule_ConfigSetBool)(RedisModuleCtx *ctx, const char *name, int value, RedisModuleString **err) REDISMODULE_ATTR;
1431+
REDISMODULE_API int (*RedisModule_ConfigSetEnum)(RedisModuleCtx *ctx, const char *name, RedisModuleString *value, RedisModuleString **err) REDISMODULE_ATTR;
1432+
REDISMODULE_API int (*RedisModule_ConfigSetNumeric)(RedisModuleCtx *ctx, const char *name, long long value, RedisModuleString **err) REDISMODULE_ATTR;
13461433

13471434
#define RedisModule_IsAOFClient(id) ((id) == UINT64_MAX)
13481435

@@ -1635,6 +1722,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
16351722
REDISMODULE_GET_API(BlockedClientMeasureTimeEnd);
16361723
REDISMODULE_GET_API(SetDisconnectCallback);
16371724
REDISMODULE_GET_API(SubscribeToKeyspaceEvents);
1725+
REDISMODULE_GET_API(UnsubscribeFromKeyspaceEvents);
16381726
REDISMODULE_GET_API(AddPostNotificationJob);
16391727
REDISMODULE_GET_API(NotifyKeyspaceEvent);
16401728
REDISMODULE_GET_API(GetNotifyKeyspaceEvents);
@@ -1655,6 +1743,10 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
16551743
REDISMODULE_GET_API(ClusterKeySlot);
16561744
REDISMODULE_GET_API(ClusterKeySlotC);
16571745
REDISMODULE_GET_API(ClusterCanonicalKeyNameInSlot);
1746+
REDISMODULE_GET_API(ClusterCanAccessKeysInSlot);
1747+
REDISMODULE_GET_API(ClusterPropagateForSlotMigration);
1748+
REDISMODULE_GET_API(ClusterGetLocalSlotRanges);
1749+
REDISMODULE_GET_API(ClusterFreeSlotRanges);
16581750
REDISMODULE_GET_API(ExportSharedAPI);
16591751
REDISMODULE_GET_API(GetSharedAPI);
16601752
REDISMODULE_GET_API(RegisterCommandFilter);
@@ -1723,6 +1815,18 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
17231815
REDISMODULE_GET_API(RdbLoad);
17241816
REDISMODULE_GET_API(RdbSave);
17251817
REDISMODULE_GET_API(GetInternalSecret);
1818+
REDISMODULE_GET_API(ConfigIteratorCreate);
1819+
REDISMODULE_GET_API(ConfigIteratorRelease);
1820+
REDISMODULE_GET_API(ConfigIteratorNext);
1821+
REDISMODULE_GET_API(ConfigGetType);
1822+
REDISMODULE_GET_API(ConfigGet);
1823+
REDISMODULE_GET_API(ConfigGetBool);
1824+
REDISMODULE_GET_API(ConfigGetEnum);
1825+
REDISMODULE_GET_API(ConfigGetNumeric);
1826+
REDISMODULE_GET_API(ConfigSet);
1827+
REDISMODULE_GET_API(ConfigSetBool);
1828+
REDISMODULE_GET_API(ConfigSetEnum);
1829+
REDISMODULE_GET_API(ConfigSetNumeric);
17261830

17271831

17281832
#ifdef REDISMODULE_RLEC_API_DEFS

0 commit comments

Comments
 (0)