public function set($key, $value = null, $expiration = 0)
    {
        if (empty($key)) return false;

        if (isset($this->list[$key])) {
            if (!$this->list[$key] == $value) return true;

            $this->list[$key]               = $value;
            $this->cacheListing[$key]->data = $value;
            $this->cacheListing[$key]->save();

            return true;
        }

        $this->list[$key] = $value;
        $entry            = new Entry();

        $entry->setKeyName($key);
        $entry->setKey($this->getRandomInt());

        $entry->setPermission(MemoryHandler::DEFAULT_PERMISSIONS);
        $entry->setMode(MemoryHandler::CREATE_MOD);
        $entry->setSize((int)MemoryHandler::DEFAULT_SIZE);
        $entry->setOffset((int)MemoryHandler::DEFAULT_OFFSET);
        $entry->setStart((int)0);
        $entry->setCount((int)0);
        $entry->setTtl((int)$expiration);
        $entry->setData($value);

        $entry->save();
        $this->cacheListing[$key] = $entry;

        return true;
    }