/* This function must be present on each Redis module. It is used in order to * register the commands into the Redis server. */ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { if (RedisModule_Init(ctx,"hellotype",1,REDISMODULE_APIVER_1) == REDISMODULE_ERR) return REDISMODULE_ERR; HelloType = RedisModule_CreateDataType(ctx,"hellotype",0,HelloTypeRdbLoad,HelloTypeRdbSave,HelloTypeAofRewrite,HelloTypeDigest,HelloTypeFree); if (HelloType == NULL) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx,"hellotype.insert", HelloTypeInsert_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx,"hellotype.range", HelloTypeRange_RedisCommand,"readonly",1,1,1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx,"hellotype.len", HelloTypeLen_RedisCommand,"readonly",1,1,1) == REDISMODULE_ERR) return REDISMODULE_ERR; return REDISMODULE_OK; }
size_t sz = sizeof(*idx); TrieMapIterator *it = TrieMap_Iterate(idx->values, "", 0); char *str; tm_len_t slen; void *ptr; while (TrieMapIterator_Next(it, &str, &slen, &ptr)) { sz += slen + InvertedIndex_MemUsage((InvertedIndex *)ptr); } TrieMapIterator_Free(it); return sz; } int TagIndex_RegisterType(RedisModuleCtx *ctx) { RedisModuleTypeMethods tm = {.version = REDISMODULE_TYPE_METHOD_VERSION, .rdb_load = TagIndex_RdbLoad, .rdb_save = TagIndex_RdbSave, .aof_rewrite = GenericAofRewrite_DisabledHandler, .free = TagIndex_Free, .mem_usage = TagIndex_MemUsage}; TagIndexType = RedisModule_CreateDataType(ctx, "ft_tagidx", TAGIDX_CURRENT_VERSION, &tm); if (TagIndexType == NULL) { RedisModule_Log(ctx, "error", "Could not create attribute index type"); return REDISMODULE_ERR; } return REDISMODULE_OK; }
/* This function must be present on each Redis module. It is used in order to * register the commands into the Redis server. */ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { REDISMODULE_NOT_USED(argv); REDISMODULE_NOT_USED(argc); if (RedisModule_Init(ctx,"unique",1,REDISMODULE_APIVER_1) == REDISMODULE_ERR) return REDISMODULE_ERR; RedisModuleTypeMethods tm = { .version = REDISMODULE_TYPE_METHOD_VERSION, .rdb_load = UniqueTypeRdbLoad, .rdb_save = UniqueTypeRdbSave, .aof_rewrite = UniqueTypeAofRewrite, .mem_usage = UniqueTypeMemUsage, .free = UniqueTypeFree, .digest = UniqueTypeDigest }; UniqueType = RedisModule_CreateDataType(ctx,"uniqueTyp",0,&tm); if (UniqueType == NULL) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.pushup", UniquePushUPCommand, "write fast deny-oom", 1, 1, 1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.pushnx", UniquePushNXCommand, "write fast deny-oom", 1, 1, 1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.pushiv", UniquePushIVCommand, "write fast deny-oom", 1, 1, -1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.pushfv", UniquePushFVCommand, "write fast deny-oom", 1, 1, -1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.pop", UniquePopCommand, "write fast deny-oom", 1, 1, 1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.popiv", UniquePopIVCommand, "write fast deny-oom", 1, 1, 1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.popfv", UniquePopFVCommand, "write fast deny-oom", 1, 1, 1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.getall", UniqueGetAllCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR) return REDISMODULE_ERR; if (RedisModule_CreateCommand(ctx, "unique.len", UniqueLenCommand, "readonly fast", 1, 1, 1) == REDISMODULE_ERR) return REDISMODULE_ERR; return REDISMODULE_OK; }
raxSeek(&it, "^", NULL, 0); while(raxNext(&it)) { RedisModule_SaveStringBuffer(rdb, (const char *)it.key, it.key_len); } raxStop(&it); } void RaxType_AofRewrite(RedisModuleIO *aof, RedisModuleString *key, void *value) { // TODO: implement. } void RaxType_Free(void *value) { rax *r = value; raxFree(r); } int RaxType_Register(RedisModuleCtx *ctx) { RedisModuleTypeMethods tm = {.version = REDISMODULE_TYPE_METHOD_VERSION, .rdb_load = RaxType_RdbLoad, .rdb_save = RaxType_RdbSave, .aof_rewrite = RaxType_AofRewrite, .free = RaxType_Free}; RaxRedisModuleType = RedisModule_CreateDataType(ctx, "raxtype01", RAX_TYPE_ENCODING_VERSION, &tm); if (RaxRedisModuleType == NULL) { return REDISMODULE_ERR; } return REDISMODULE_OK; }