code: def pop(self, index=None):
          
          if index is None:
              return self._loads(self._client.rpop(self.key_prefix))
          elif index == 0:
              return self._loads(self._client.lpop(self.key_prefix))
          else:
              _uuid = gen_rand_str(16, 24)
              r = self[index]
              self[index] = _uuid
              self.remove(_uuid)
              return r
docs: Removes and returns the item at @index or from the end of the list
              -> item at @index