docs: def _get(self, key, what):
          """Generic getter magic method.
  
          The node with the nearest but not less hash value is returned.
  
          :param key: the key to look for.
          :param what: the information to look for in, allowed values:
              - instance (default): associated node instance
              - nodename: node name
              - pos: index of the given key in the ring
              - tuple: ketama compatible (pos, name) tuple
              - weight: node weight
          """
          if not self.runtime._ring:
              return None
  
          pos = self._get_pos(key)
          if what == 'pos':
              return pos
  
          nodename = self.runtime._ring[self.runtime._keys[pos]]
          if what in ['hostname', 'instance', 'port', 'weight']:
              return self.runtime._nodes[nodename][what]
          elif what == 'dict':
              return self.runtime._nodes[nodename]
          elif what == 'nodename':
              return nodename
          elif what == 'tuple':
              return (self.runtime._keys[pos], nodename)