91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP7+REDIS3.2 phpredis scan命令 游標問題

發布時間:2020-08-09 06:18:17 來源:網絡 閱讀:2582 作者:努力的C 欄目:web開發

redis 中匹配某些key的方法一般有keys和scan兩種方式,但是鑒于直接在線上執行keys操作可能會造成Redis卡死等問題,所以想看有哪些keys,只能使用scan來操作了。在Redis命令行下操作沒啥問題:
SCAN 游標 MATCH 模式 COUNT
每次執行都會返回當前遍歷到了哪個槽位和是否找到了對應的key
項目中使用了Phpredis擴展,所以想著用程序來遍歷一下看看,一開始按照phpredis官網文檔提供的代碼示例執行
:這是官方文檔,我在PHP7下執行了一下,發現并沒有結果。。。。。。。
scan
Description: Scan the keyspace for keys

Parameters
LONG (reference): Iterator, initialized to NULL STRING, Optional: Pattern to match LONG, Optional: Count of keys per iteration (only a suggestion to Redis)

Return value
Array, boolean: This function will return an array of keys or FALSE if Redis returned zero keys

Example

/ Without enabling Redis::SCAN_RETRY (default condition) /
$it = NULL;
do {
// Scan for some keys
$arr_keys = $redis->scan($it);

// Redis may return empty results, so protect against that
if ($arr_keys !== FALSE) {
    foreach($arr_keys as $str_key) {
        echo "Here is a key: $str_key\n";
    }
}

} while ($it > 0);
echo "No more keys to scan!\n";

/ With Redis::SCAN_RETRY enabled /
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$it = NULL;

/ phpredis will retry the SCAN command if empty results are returned from the
server, so no empty results check is required.
/
while ($arr_keys = $redis->scan($it)) {
foreach ($arr_keys as $str_key) {
echo "Here is a key: $str_key\n";
}
}
echo "No more keys to scan!\n";

然后從網上搜了一下,發現有 $redis->scan($it,$match,$count)的,這樣好像能搜到一些key,但還是不行。
我的理想情況是跟命令行一樣,每次scan能夠返回一個游標的位置和這次掃描出的keys。。。。。。。。。

最后是同事寫了一個版本,這個版本可以

$it = null;
$match = 'zhongce:activity_vote*';
$count = 10000;
$index = 0;
$redis->setOption(Redis::OPT_SCAN,Redis::SCAN_RETRY);
$iterator = null;
while ($keys = call_user_func_array(array($redis, 'scan'), array(&$it, $match))) {

foreach ($keys as $key) {
    echo $key . PHP_EOL;
}

}

上面是沒加count的版本,會直接遍歷出所有滿足條件的keys,你也可以加上count限制每次遍歷的數量。。。。。。。。。。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鸡泽县| 阳信县| 株洲县| 华池县| 昔阳县| 高密市| 昭平县| 荣昌县| 广昌县| 穆棱市| 彩票| 林周县| 普兰店市| 泸水县| 锡林浩特市| 横山县| 长宁区| 南阳市| 雅安市| 景谷| 西峡县| 县级市| 江山市| 资源县| 油尖旺区| 右玉县| 扎兰屯市| 无为县| 凤城市| 搜索| 察雅县| 桃源县| 衡阳县| 霍州市| 手机| 德保县| 乌拉特中旗| 怀安县| SHOW| 舞阳县| 湟源县|