code: public function set($value, $seconds = null, $milliseconds = null, $exist = null): ?bool
      {
          if ($value === null) {
              return $this->delete();
          }
  
          return $this->redis->set($this->key, $this->serialize($value), $seconds, $milliseconds, $exist) === true;
      }
docs: @param mixed       $value                                    Null deletes the value - everything else is
  serialized and set.
  
  @param null|int    $seconds                                  Optional expiration time in seconds.
  @param null|int    $milliseconds                             Optional expiration time in milliseconds.
  @param null|string $exist                                    See self::FLAG_* for possible flags. (ADD, UPDATE)
  
  @return bool|null True if operation was successful. Null in case a flag caused the operation to fail (e.g. key
  already existent).
  
  Note: I have no idea why not to use false instead of null. But that's what the client reports.