public function mark($eventName, $id, DateTime $dateTime = null)
    {
        $dateTime = is_null($dateTime) ? new DateTime : $dateTime;

        $eventData = array(
            new Year($eventName, $dateTime),
            new Month($eventName, $dateTime),
            new Week($eventName, $dateTime),
            new Day($eventName, $dateTime),
            new Hour($eventName, $dateTime),
        );

        foreach ($eventData as $event) {
            $key = $this->prefixKey . $event->getKey();
            $this->getRedisClient()->setbit($key, $id, 1);
            $this->getRedisClient()->sadd($this->prefixKey . 'keys', $key);
        }

        return $this;
    }