public Map<RedisBigTableKey, byte[]> getByKey(byte[] table, RedisBigTableKey k) throws RedisForemanException
	{
		boolean tableExists = tableExists(table);
		boolean emptyParts = hasEmptyParts(k);
		if (tableExists && !emptyParts)
		{
			Map<RedisBigTableKey, byte[]> toReturn = new HashMap<RedisBigTableKey, byte[]>();
			Set<byte[]> redisKeys = instance.hkeys(table);
			for (byte[] value : redisKeys)
			{
				RedisBigTableKey inflated = RedisBigTableKey.inflate(value);
				if (inflated.matches(k))
				{
					byte[] val = instance.hget(table, inflated.toRedisField());
					if (val != null)
					{
						toReturn.put(inflated, val);
					}
				}
			}
			return toReturn;
		}
		else if (emptyParts)
		{
			throw new RedisForemanException(MessageFactory.objective("Get entry by key").issue("Key has empty parts").objects(k));
		}
		else
		{
			throw new RedisForemanException(MessageFactory.objective("Get entry by key").issue("Table does not exist").objects(new String(table)));
		}
	}