docs: def _get_payload(self, key):
          """
          Retrieve an item and expiry time from the cache by key.
  
          :param key: The cache key
          :type key: str
  
          :rtype: dict
          """
          path = self._path(key)
  
          # If the file doesn't exists, we obviously can't return the cache so we will
          # just return null. Otherwise, we'll get the contents of the file and get
          # the expiration UNIX timestamps from the start of the file's contents.
          if not os.path.exists(path):
              return {'data': None, 'time': None}
  
          with open(path, 'rb') as fh:
              contents = fh.read()
  
          expire = int(contents[:10])
  
          # If the current time is greater than expiration timestamps we will delete
          # the file and return null. This helps clean up the old files and keeps
          # this directory much cleaner for us as old files aren't hanging out.
          if round(time.time()) >= expire:
              self.forget(key)
  
              return {'data': None, 'time': None}
  
          data = self.unserialize(contents[10:])
  
          # Next, we'll extract the number of minutes that are remaining for a cache
          # so that we can properly retain the time for things like the increment
          # operation that may be performed on the cache. We'll round this out.
          time_ = math.ceil((expire - round(time.time())) / 60.)
  
          return {'data': data, 'time': time_}