Modules API: OOM_WARNING flags.

In some modules it may be useful to have an idea about being near to
OOM. Anyway additionally an explicit call to get the fill ratio will be
added in the future.
This commit is contained in:
antirez 2018-04-11 16:22:52 +02:00
parent de7de53e64
commit 0afac6939a
2 changed files with 8 additions and 1 deletions

View File

@ -1330,6 +1330,9 @@ int RM_GetSelectedDb(RedisModuleCtx *ctx) {
*
* * REDISMODULE_CTX_FLAGS_OOM: Redis is out of memory according to the
* maxmemory setting.
*
* * REDISMODULE_CTX_FLAGS_OOM_WARNING: Less than 25% of memory remains before
* reaching the maxmemory level.
*/
int RM_GetContextFlags(RedisModuleCtx *ctx) {
@ -1369,8 +1372,10 @@ int RM_GetContextFlags(RedisModuleCtx *ctx) {
}
/* OOM flag. */
if (getMaxmemoryState(NULL,NULL,NULL,NULL) == C_ERR) {
float level;
if (getMaxmemoryState(NULL,NULL,NULL,&level) == C_ERR) {
flags |= REDISMODULE_CTX_FLAGS_OOM;
if (level > 0.75) flags |= REDISMODULE_CTX_FLAGS_OOM_WARNING;
}
return flags;

View File

@ -83,6 +83,8 @@
#define REDISMODULE_CTX_FLAGS_EVICT (1<<9)
/* Redis is out of memory according to the maxmemory flag. */
#define REDISMODULE_CTX_FLAGS_OOM (1<<10)
/* Less than 25% of memory available according to maxmemory. */
#define REDISMODULE_CTX_FLAGS_OOM_WARNING (1<<11)
#define REDISMODULE_NOTIFY_GENERIC (1<<2) /* g */
#define REDISMODULE_NOTIFY_STRING (1<<3) /* $ */