@@ -65,10 +65,13 @@ typedef long long ustime_t;
65
65
#define REDISMODULE_OPEN_KEY_NOEXPIRE (1<<19)
66
66
/* Avoid any effects from fetching the key */
67
67
#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
+
68
71
/* Mask of all REDISMODULE_OPEN_KEY_* values. Any new mode should be added to this list.
69
72
* Should not be used directly by the module, use RM_GetOpenKeyModesAll instead.
70
73
* 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
72
75
73
76
/* List push and pop */
74
77
#define REDISMODULE_LIST_HEAD 0
@@ -117,12 +120,13 @@ typedef long long ustime_t;
117
120
#define REDISMODULE_ZADD_LT (1<<6)
118
121
119
122
/* 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)
126
130
127
131
#define REDISMODULE_CONFIG_DEFAULT 0 /* This is the default for a module config. */
128
132
#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
1089
1093
REDISMODULE_API int (* RedisModule_ZsetRangeEndReached )(RedisModuleKey * key ) REDISMODULE_ATTR ;
1090
1094
REDISMODULE_API int (* RedisModule_HashSet )(RedisModuleKey * key , int flags , ...) REDISMODULE_ATTR ;
1091
1095
REDISMODULE_API int (* RedisModule_HashGet )(RedisModuleKey * key , int flags , ...) REDISMODULE_ATTR ;
1096
+ REDISMODULE_API mstime_t (* RedisModule_HashFieldMinExpire )(RedisModuleKey * key ) REDISMODULE_ATTR ;
1092
1097
REDISMODULE_API int (* RedisModule_StreamAdd )(RedisModuleKey * key , int flags , RedisModuleStreamID * id , RedisModuleString * * argv , int64_t numfields ) REDISMODULE_ATTR ;
1093
1098
REDISMODULE_API int (* RedisModule_StreamDelete )(RedisModuleKey * key , RedisModuleStreamID * id ) REDISMODULE_ATTR ;
1094
1099
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
1307
1312
REDISMODULE_API int * (* RedisModule_GetCommandKeysWithFlags )(RedisModuleCtx * ctx , RedisModuleString * * argv , int argc , int * num_keys , int * * out_flags ) REDISMODULE_ATTR ;
1308
1313
REDISMODULE_API const char * (* RedisModule_GetCurrentCommandName )(RedisModuleCtx * ctx ) REDISMODULE_ATTR ;
1309
1314
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 ;
1310
1316
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 ;
1311
1319
REDISMODULE_API RedisModuleString * (* RedisModule_DefragRedisModuleString )(RedisModuleDefragCtx * ctx , RedisModuleString * str ) REDISMODULE_ATTR ;
1312
1320
REDISMODULE_API int (* RedisModule_DefragShouldStop )(RedisModuleDefragCtx * ctx ) REDISMODULE_ATTR ;
1313
1321
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
1460
1468
REDISMODULE_GET_API (ZsetRangeEndReached );
1461
1469
REDISMODULE_GET_API (HashSet );
1462
1470
REDISMODULE_GET_API (HashGet );
1471
+ REDISMODULE_GET_API (HashFieldMinExpire );
1463
1472
REDISMODULE_GET_API (StreamAdd );
1464
1473
REDISMODULE_GET_API (StreamDelete );
1465
1474
REDISMODULE_GET_API (StreamIteratorStart );
@@ -1678,7 +1687,10 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
1678
1687
REDISMODULE_GET_API (GetCommandKeysWithFlags );
1679
1688
REDISMODULE_GET_API (GetCurrentCommandName );
1680
1689
REDISMODULE_GET_API (RegisterDefragFunc );
1690
+ REDISMODULE_GET_API (RegisterDefragCallbacks );
1681
1691
REDISMODULE_GET_API (DefragAlloc );
1692
+ REDISMODULE_GET_API (DefragAllocRaw );
1693
+ REDISMODULE_GET_API (DefragFreeRaw );
1682
1694
REDISMODULE_GET_API (DefragRedisModuleString );
1683
1695
REDISMODULE_GET_API (DefragShouldStop );
1684
1696
REDISMODULE_GET_API (DefragCursorSet );
0 commit comments