int Ardb::Type(const DBID& db, const Slice& key) { if (GetValue(db, key, NULL) == 0) { return KV; } int type = -1; Slice empty; KeyObject sk(key, SET_META, db); if (0 == GetValue(sk, NULL)) { return SET_ELEMENT; } KeyObject lk(key, LIST_META, db); if (0 == GetValue(lk, NULL)) { return LIST_META; } KeyObject zk(key, ZSET_META, db); if (0 == GetValue(zk, NULL)) { return ZSET_ELEMENT_SCORE; } HashKeyObject hk(key, empty, db); GET_KEY_TYPE(hk, type); if (type > 0) { return type; } KeyObject tk(key, TABLE_META, db); if (0 == GetValue(tk, NULL)) { return TABLE_META; } KeyObject bk(key, BITSET_META, db); if (0 == GetValue(bk, NULL)) { return BITSET_META; } return -1; }
int Ardb::Type(const DBID& db, const Slice& key) { if (Exists(db, key)) { return KV; } int type = -1; Slice empty; SetKeyObject sk(key, empty, db); GET_KEY_TYPE(sk, type); if (type < 0) { ZSetScoreKeyObject zk(key, empty, db); GET_KEY_TYPE( zk, type); if (type < 0) { HashKeyObject hk(key, empty, db); GET_KEY_TYPE( hk, type); if (type < 0) { KeyObject lk(key, LIST_META, db); GET_KEY_TYPE( lk, type); if (type < 0) { KeyObject tk(key, TABLE_META, db); GET_KEY_TYPE(tk, type); if (type < 0) { KeyObject bk(key, BITSET_META, db); GET_KEY_TYPE(bk, type); } } } } } return type; }