Skip to content

Commit 022555e

Browse files
committed
add field expiration api
1 parent cf68a14 commit 022555e

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

redismodule.h

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,13 @@ typedef long long ustime_t;
6565
#define REDISMODULE_OPEN_KEY_NOEXPIRE (1<<19)
6666
/* Avoid any effects from fetching the key */
6767
#define REDISMODULE_OPEN_KEY_NOEFFECTS (1<<20)
68+
/* Allow access expired key that haven't deleted yet */
69+
#define REDISMODULE_OPEN_KEY_ACCESS_EXPIRED (1<<21)
70+
6871
/* Mask of all REDISMODULE_OPEN_KEY_* values. Any new mode should be added to this list.
6972
* Should not be used directly by the module, use RM_GetOpenKeyModesAll instead.
7073
* Located here so when we will add new modes we will not forget to update it. */
71-
#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
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
7275

7376
/* List push and pop */
7477
#define REDISMODULE_LIST_HEAD 0
@@ -117,12 +120,13 @@ typedef long long ustime_t;
117120
#define REDISMODULE_ZADD_LT (1<<6)
118121

119122
/* Hash API flags. */
120-
#define REDISMODULE_HASH_NONE 0
121-
#define REDISMODULE_HASH_NX (1<<0)
122-
#define REDISMODULE_HASH_XX (1<<1)
123-
#define REDISMODULE_HASH_CFIELDS (1<<2)
124-
#define REDISMODULE_HASH_EXISTS (1<<3)
125-
#define REDISMODULE_HASH_COUNT_ALL (1<<4)
123+
#define REDISMODULE_HASH_NONE 0
124+
#define REDISMODULE_HASH_NX (1<<0)
125+
#define REDISMODULE_HASH_XX (1<<1)
126+
#define REDISMODULE_HASH_CFIELDS (1<<2)
127+
#define REDISMODULE_HASH_EXISTS (1<<3)
128+
#define REDISMODULE_HASH_COUNT_ALL (1<<4)
129+
#define REDISMODULE_HASH_EXPIRE_TIME (1<<5)
126130

127131
#define REDISMODULE_CONFIG_DEFAULT 0 /* This is the default for a module config. */
128132
#define REDISMODULE_CONFIG_IMMUTABLE (1ULL<<0) /* Can this value only be set at startup? */
@@ -1089,6 +1093,7 @@ REDISMODULE_API int (*RedisModule_ZsetRangePrev)(RedisModuleKey *key) REDISMODUL
10891093
REDISMODULE_API int (*RedisModule_ZsetRangeEndReached)(RedisModuleKey *key) REDISMODULE_ATTR;
10901094
REDISMODULE_API int (*RedisModule_HashSet)(RedisModuleKey *key, int flags, ...) REDISMODULE_ATTR;
10911095
REDISMODULE_API int (*RedisModule_HashGet)(RedisModuleKey *key, int flags, ...) REDISMODULE_ATTR;
1096+
REDISMODULE_API mstime_t (*RedisModule_HashFieldMinExpire)(RedisModuleKey *key) REDISMODULE_ATTR;
10921097
REDISMODULE_API int (*RedisModule_StreamAdd)(RedisModuleKey *key, int flags, RedisModuleStreamID *id, RedisModuleString **argv, int64_t numfields) REDISMODULE_ATTR;
10931098
REDISMODULE_API int (*RedisModule_StreamDelete)(RedisModuleKey *key, RedisModuleStreamID *id) REDISMODULE_ATTR;
10941099
REDISMODULE_API int (*RedisModule_StreamIteratorStart)(RedisModuleKey *key, int flags, RedisModuleStreamID *startid, RedisModuleStreamID *endid) REDISMODULE_ATTR;
@@ -1307,7 +1312,10 @@ REDISMODULE_API int *(*RedisModule_GetCommandKeys)(RedisModuleCtx *ctx, RedisMod
13071312
REDISMODULE_API int *(*RedisModule_GetCommandKeysWithFlags)(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, int *num_keys, int **out_flags) REDISMODULE_ATTR;
13081313
REDISMODULE_API const char *(*RedisModule_GetCurrentCommandName)(RedisModuleCtx *ctx) REDISMODULE_ATTR;
13091314
REDISMODULE_API int (*RedisModule_RegisterDefragFunc)(RedisModuleCtx *ctx, RedisModuleDefragFunc func) REDISMODULE_ATTR;
1315+
REDISMODULE_API int (*RedisModule_RegisterDefragCallbacks)(RedisModuleCtx *ctx, RedisModuleDefragFunc start, RedisModuleDefragFunc end) REDISMODULE_ATTR;
13101316
REDISMODULE_API void *(*RedisModule_DefragAlloc)(RedisModuleDefragCtx *ctx, void *ptr) REDISMODULE_ATTR;
1317+
REDISMODULE_API void *(*RedisModule_DefragAllocRaw)(RedisModuleDefragCtx *ctx, size_t size) REDISMODULE_ATTR;
1318+
REDISMODULE_API void (*RedisModule_DefragFreeRaw)(RedisModuleDefragCtx *ctx, void *ptr) REDISMODULE_ATTR;
13111319
REDISMODULE_API RedisModuleString *(*RedisModule_DefragRedisModuleString)(RedisModuleDefragCtx *ctx, RedisModuleString *str) REDISMODULE_ATTR;
13121320
REDISMODULE_API int (*RedisModule_DefragShouldStop)(RedisModuleDefragCtx *ctx) REDISMODULE_ATTR;
13131321
REDISMODULE_API int (*RedisModule_DefragCursorSet)(RedisModuleDefragCtx *ctx, unsigned long cursor) REDISMODULE_ATTR;
@@ -1460,6 +1468,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
14601468
REDISMODULE_GET_API(ZsetRangeEndReached);
14611469
REDISMODULE_GET_API(HashSet);
14621470
REDISMODULE_GET_API(HashGet);
1471+
REDISMODULE_GET_API(HashFieldMinExpire);
14631472
REDISMODULE_GET_API(StreamAdd);
14641473
REDISMODULE_GET_API(StreamDelete);
14651474
REDISMODULE_GET_API(StreamIteratorStart);
@@ -1678,7 +1687,10 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
16781687
REDISMODULE_GET_API(GetCommandKeysWithFlags);
16791688
REDISMODULE_GET_API(GetCurrentCommandName);
16801689
REDISMODULE_GET_API(RegisterDefragFunc);
1690+
REDISMODULE_GET_API(RegisterDefragCallbacks);
16811691
REDISMODULE_GET_API(DefragAlloc);
1692+
REDISMODULE_GET_API(DefragAllocRaw);
1693+
REDISMODULE_GET_API(DefragFreeRaw);
16821694
REDISMODULE_GET_API(DefragRedisModuleString);
16831695
REDISMODULE_GET_API(DefragShouldStop);
16841696
REDISMODULE_GET_API(DefragCursorSet);

0 commit comments

Comments
 (0)