Exemple #1
0
	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;
	}
Exemple #2
0
	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;
	}