Esempio n. 1
0
void HelloTypeRdbSave(RedisModuleIO *rdb, void *value) {
    struct HelloTypeObject *hto = value;
    struct HelloTypeNode *node = hto->head;
    RedisModule_SaveUnsigned(rdb,hto->len);
    while(node) {
        RedisModule_SaveSigned(rdb,node->value);
        node = node->next;
    }
}
Esempio n. 2
0
void UniqueTypeRdbSave(RedisModuleIO *rdb, void *value) {
    unique *unique = value;
    listIter *it = listGetIterator(unique->l, AL_START_HEAD);
    listNode *node;
    RedisModule_SaveUnsigned(rdb, listLength(unique->l));
    for (node = listNext(it); node; node = listNext(it)) {
        dictEntry *en = node->value;
        RedisModule_SaveStringBuffer(rdb, en->key, sdslen(en->key));
        RedisModule_SaveStringBuffer(rdb, en->v.val, sdslen(en->v.val));
    }
}
Esempio n. 3
0
void RaxType_RdbSave(RedisModuleIO *rdb, void *value) {
    rax *r = (rax *)value;
    int count = raxSize(r);

    RedisModule_SaveUnsigned(rdb, count);
    
    // Scan entire trie.
    raxIterator it;
    raxStart(&it, r);
    raxSeek(&it, "^", NULL, 0);

    while(raxNext(&it)) {
        RedisModule_SaveStringBuffer(rdb, (const char *)it.key, it.key_len);
    }
    raxStop(&it);
}
Esempio n. 4
0
void TagIndex_RdbSave(RedisModuleIO *rdb, void *value) {
  TagIndex *idx = value;
  RedisModule_SaveUnsigned(rdb, idx->values->cardinality);
  TrieMapIterator *it = TrieMap_Iterate(idx->values, "", 0);

  char *str;
  tm_len_t slen;
  void *ptr;
  size_t count = 0;
  while (TrieMapIterator_Next(it, &str, &slen, &ptr)) {
    count++;
    RedisModule_SaveStringBuffer(rdb, str, slen);
    InvertedIndex *inv = ptr;
    InvertedIndex_RdbSave(rdb, inv);
  }
  assert(count == idx->values->cardinality);
  TrieMapIterator_Free(it);
}