use starge driver prefix option
[pharext/pharext.org] / app / Github / Storage / Redis.php
index 13d641a18afb609f97aa551c3d3fc7140a3d6d44..c6db525091c7d1fe1360906382a8ea875aeb3a8b 100644 (file)
@@ -15,70 +15,39 @@ class Redis implements Storage
                        $rd = new \Redis();
                        $rd->open("localhost");
                        $rd->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_PHP);
+                       $rd->setOption(\Redis::OPT_PREFIX, "$ns:");
                }
                $this->rd = $rd;
        }
 
-       private function key($key) {
-               return sprintf("%s:%s", $this->ns, $key);
-       }
-
-       function get($key, &$val = null, &$ltl = null, $update = false) {
-               if (!$item = $this->rd->get($this->key($key))) {
-                       header("Cache-Item: ".serialize($item), false);
+       function get($key, Item &$item = null, $update = false) {
+               if (!$item = $this->rd->get($key)) {
                        return false;
                }
 
-               $val = $item->value;
-               $ttl = $item->ttl;
-               $set = $item->time;
-
-               if (!isset($ttl)) {
+               if (null === $item->getTTL()) {
                        return true;
                }
-               $now = time();
-               $ltl = $ttl - ($now - $set);
-               if ($ltl >= 0) {
+               if ($item->getLTL() >= 0) {
                        if ($update) {
-                               $item->time = time();
-                               $this->rd->setex($this->key($key), $ttl + 60*60*24, $item);
+                               $item->setTimestamp();
+                               $this->rd->setex($key, $item->getTTL() + 60*60*24, $item);
                        }
                        return true;
                }
                return false;
        }
 
-       function set($key, $val, $ttl = null) {
-               $item = new Redis\Item([
-                       "value" => $val,
-                       "ttl" => $ttl,
-                       "time" => isset($ttl) ? time() : null
-               ]);
-               if (isset($ttl)) {
-                       $this->rd->set($this->key($key), $item);
+       function set($key, Item $item) {
+               if (null === $item->getTTL()) {
+                       $this->rd->set($key, $item);
                } else {
-                       $this->rd->setex($this->key($key), $ttl + 60*60*24, $item);
+                       $this->rd->setex($key, $item->getTTL() + 60*60*24, $item);
                }
                return $this;
        }
 
        function del($key) {
-               $this->rd->delete($this->key($key));
+               $this->rd->delete($key);
        }
 }
-
-namespace app\Github\Storage\Redis;
-
-class Item
-{
-       public $value;
-       public $time;
-       public $ttl;
-
-       function __construct(array $data) {
-               foreach ($data as $key => $val) {
-                       $this->$key = $val;
-               }
-       }
-}
-