code: def set(self, key, value, ttl=-1):
          
          check_not_none(key, "key can't be None")
          check_not_none(value, "value can't be None")
          key_data = self._to_data(key)
          value_data = self._to_data(value)
          return self._set_internal(key_data, value_data, ttl)
docs: Puts an entry into this map. Similar to the put operation except that set doesn't return the old value, which is
          more efficient. If ttl is provided, entry will expire and get evicted after the ttl.
  
          **Warning: This method uses __hash__ and __eq__ methods of binary form of the key, not the actual implementations
          of __hash__ and __eq__ defined in key's class.**
  
          :param key: (object), key of the entry.
          :param value: (object), value of the entry.
          :param ttl: (int), maximum time in seconds for this entry to stay in the map, 0 means infinite. If ttl is not
              provided, the value configured on server side configuration will be used (optional).