code: async def zrevrangebyscore(self, name, max, min, start=None, num=None,
                                 withscores=False, score_cast_func=float):
          
          if (start is not None and num is None) or \
                  (num is not None and start is None):
              raise RedisError("``start`` and ``num`` must both be specified")
          pieces = ['ZREVRANGEBYSCORE', name, max, min]
          if start is not None and num is not None:
              pieces.extend([b('LIMIT'), start, num])
          if withscores:
              pieces.append(b('WITHSCORES'))
          options = {
              'withscores': withscores,
              'score_cast_func': score_cast_func
          }
          return await self.execute_command(*pieces, **options)
docs: Return a range of values from the sorted set ``name`` with scores
          between ``min`` and ``max`` in descending order.
  
          If ``start`` and ``num`` are specified, then return a slice
          of the range.
  
          ``withscores`` indicates to return the scores along with the values.
          The return type is a list of (value, score) pairs
  
          ``score_cast_func`` a callable used to cast the score return value