1515 */
1616class RedisStorage implements StorageInterface
1717{
18+ /** @var \Predis\Client|\Redis */
1819 protected $ redis ;
1920
21+ /** @var string */
2022 protected $ hash ;
2123
2224 /**
23- * @param \Predis\Client $redis Redis Client
24- * @param string $hash
25+ * @param \Predis\Client|\Redis $redis Redis Client
26+ * @param string $hash
2527 */
2628 public function __construct ($ redis , $ hash = 'phpdebugbar ' )
2729 {
@@ -34,29 +36,35 @@ public function __construct($redis, $hash = 'phpdebugbar')
3436 */
3537 public function save ($ id , $ data )
3638 {
37- $ this ->redis ->hset ("$ this ->hash :meta " , $ id , serialize ($ data ['__meta ' ]));
39+ $ this ->redis ->hSet ("$ this ->hash :meta " , $ id , serialize ($ data ['__meta ' ]));
3840 unset($ data ['__meta ' ]);
39- $ this ->redis ->hset ("$ this ->hash :data " , $ id , serialize ($ data ));
41+ $ this ->redis ->hSet ("$ this ->hash :data " , $ id , serialize ($ data ));
4042 }
4143
4244 /**
4345 * {@inheritdoc}
4446 */
4547 public function get ($ id )
4648 {
47- return array_merge (unserialize ($ this ->redis ->hget ("$ this ->hash :data " , $ id )),
48- array ('__meta ' => unserialize ($ this ->redis ->hget ("$ this ->hash :meta " , $ id ))));
49+ return array_merge (unserialize ($ this ->redis ->hGet ("$ this ->hash :data " , $ id )),
50+ array ('__meta ' => unserialize ($ this ->redis ->hGet ("$ this ->hash :meta " , $ id ))));
4951 }
5052
5153 /**
5254 * {@inheritdoc}
5355 */
54- public function find (array $ filters = array () , $ max = 20 , $ offset = 0 )
56+ public function find (array $ filters = [] , $ max = 20 , $ offset = 0 )
5557 {
56- $ results = array () ;
58+ $ results = [] ;
5759 $ cursor = "0 " ;
60+ $ isPhpRedis = get_class ($ this ->redis ) === 'Redis ' ;
61+
5862 do {
59- list ($ cursor , $ data ) = $ this ->redis ->hscan ("$ this ->hash :meta " , $ cursor );
63+ if ($ isPhpRedis ) {
64+ $ data = $ this ->redis ->hScan ("$ this ->hash :meta " , $ cursor );
65+ } else {
66+ [$ cursor , $ data ] = $ this ->redis ->hScan ("$ this ->hash :meta " , $ cursor );
67+ }
6068
6169 foreach ($ data as $ meta ) {
6270 if ($ meta = unserialize ($ meta )) {
@@ -66,11 +74,11 @@ public function find(array $filters = array(), $max = 20, $offset = 0)
6674 }
6775 }
6876 } while ($ cursor );
69-
70- usort ($ results , function ($ a , $ b ) {
71- return $ a ['utime ' ] < $ b ['utime ' ];
77+
78+ usort ($ results , static function ($ a , $ b ) {
79+ return $ b ['utime ' ] <=> $ a ['utime ' ];
7280 });
73-
81+
7482 return array_slice ($ results , $ offset , $ max );
7583 }
7684
@@ -92,6 +100,7 @@ protected function filter($meta, $filters)
92100 */
93101 public function clear ()
94102 {
95- $ this ->redis ->del ($ this ->hash );
103+ $ this ->redis ->del ("$ this ->hash :data " );
104+ $ this ->redis ->del ("$ this ->hash :meta " );
96105 }
97106}
0 commit comments