phpredis到底該如何使用hScan呢?官方手冊上寫得很模糊,是以到處找資料。雖然最後沒用得上,但還是把範例貼上,供有心人研究(範例不是本人寫的,隻是搜集的)。
範例一:
public function testHScan()
{
if (version_compare($this->version, "2.8.0", "lt")) {
$this->markTestSkipped();
return;
}
// Never get empty sets
$this->redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$this->redis->del('hash');
$i_foo_mems = 0;
for ($i = 0; $i < 100; $i++) {
if ($i > 3) {
$this->redis->hset('hash', "member:{$i}", "value:{$i}");
} else {
$this->redis->hset('hash', "foomember:{$i}", "value:{$i}");
$i_foo_mems++;
}
}
// Scan all of them
$it = NULL;
while ($arr_keys = $this->redis->hscan('hash', $it)) {
$i -= count($arr_keys);
}
$this->assertEquals(0, $i);
// Scan just *foomem* (should be 4)
$it = NULL;
while ($arr_keys = $this->redis->hscan('hash', $it, '*foomember*')) {
$i_foo_mems -= count($arr_keys);
foreach ($arr_keys as $str_mem => $str_val) {
$this->assertTrue(strpos($str_mem, 'member') !== FALSE);
$this->assertTrue(strpos($str_val, 'value') !== FALSE);
}
}
$this->assertEquals(0, $i_foo_mems);
}
範例二:
//連接配接本地的 Redis 服務
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// $redis->flushAll();
// exit();
$key = rand(0, 9999);
$fieldKey = rand(0, 49);
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$keys = $redis->hscan('user' . $key, $it, '*field' . $fieldKey . '*', 50);