code: async def zaddoption(self, name, option=None, *args, **kwargs):
          
          if not option:
              raise RedisError("ZADDOPTION must take options")
          options = set(opt.upper() for opt in option.split())
          if options - VALID_ZADD_OPTIONS:
              raise RedisError("ZADD only takes XX, NX, CH, or INCR")
          if 'NX' in options and 'XX' in options:
              raise RedisError("ZADD only takes one of XX or NX")
          pieces = list(options)
          members = []
          if args:
              if len(args) % 2 != 0:
                  raise RedisError("ZADD requires an equal number of "
                                   "values and scores")
              members.extend(args)
          for pair in iteritems(kwargs):
              members.append(pair[1])
              members.append(pair[0])
          if 'INCR' in options and len(members) != 2:
              raise RedisError("ZADD with INCR only takes one score-name pair")
          return await self.execute_command('ZADD', name, *pieces, *members)
docs: Differs from zadd in that you can set either 'XX' or 'NX' option as
          described here: https://redis.io/commands/zadd. Only for Redis 3.0.2 or
          later.
  
          The following example would add four values to the 'my-key' key:
          redis.zaddoption('my-key', 'XX', 1.1, 'name1', 2.2, 'name2', name3=3.3, name4=4.4)
          redis.zaddoption('my-key', 'NX CH', name1=2.2)