def get(self, key, default=None, reraise=False):
        """
        Get the given key from the cache, if present.
        A default value can be provided in case the requested key is not present,
        otherwise, None will be returned.

        :param key: the key to query
        :type key: str
        :param default: the value to return if the key does not exist in cache
        :param reraise: wether an exception should be thrown if now value is found, defaults to False.
        :type key: bool

        Example usage:

        .. code-block:: python
        
            cache.set('my_key', 'my_value')

            cache.get('my_key')
            >>> 'my_value'

            cache.get('not_present', 'default_value')
            >>> 'default_value'

            cache.get('not_present', reraise=True)
            >>> raise lifter.exceptions.NotInCache

        """
        if not self.enabled:
            if reraise:
                raise exceptions.DisabledCache()
            return default

        try:
            return self._get(key)
        except exceptions.NotInCache:
            if reraise:
                raise
            return default