void *HelloTypeRdbLoad(RedisModuleIO *rdb, int encver) { if (encver != 0) { /* RedisModule_Log("warning","Can't load data with version %d", encver);*/ return NULL; } uint64_t elements = RedisModule_LoadUnsigned(rdb); struct HelloTypeObject *hto = createHelloTypeObject(); while(elements--) { int64_t ele = RedisModule_LoadSigned(rdb); HelloTypeInsert(hto,ele); } return hto; }
void *TagIndex_RdbLoad(RedisModuleIO *rdb, int encver) { unsigned long long elems = RedisModule_LoadUnsigned(rdb); TagIndex *idx = NewTagIndex(); while (elems--) { size_t slen; char *s = RedisModule_LoadStringBuffer(rdb, &slen); InvertedIndex *inv = InvertedIndex_RdbLoad(rdb, INVERTED_INDEX_ENCVER); assert(inv != NULL); TrieMap_Add(idx->values, s, MIN(slen, MAX_TAG_LEN), inv, NULL); rm_free(s); } return idx; }
void *RaxType_RdbLoad(RedisModuleIO *rdb, int encver) { if (encver != 0) { return NULL; } // Determin how many elements are in the trie uint64_t elements = RedisModule_LoadUnsigned(rdb); rax *r = raxNew(); while (elements--) { size_t len; char *key = RedisModule_LoadStringBuffer(rdb, &len); // TODO: Load value from RDB. raxInsert(r, (unsigned char *)key, len, NULL, NULL); } return r; }
void *UniqueTypeRdbLoad(RedisModuleIO *rdb, int encver) { if (encver != 0) { /* RedisModule_Log("warning","Can't load data with version %d", encver);*/ return NULL; } uint64_t elements = RedisModule_LoadUnsigned(rdb); unique *unique = uniqueCreate(); char *pkey, *pval; size_t lkey, lval; sds key, val; while(elements--) { pkey = RedisModule_LoadStringBuffer(rdb, &lkey); pval = RedisModule_LoadStringBuffer(rdb, &lval); key = sdsnewlen(pkey, lkey); val = sdsnewlen(pval, lval); RedisModule_Free(pkey); RedisModule_Free(pval); uniquePush(unique, key, val, retain_new); } return unique; }