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

溫馨提示×

溫馨提示×

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

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

Redis中用scan替換keys的方法

發布時間:2020-05-21 15:28:50 來源:億速云 閱讀:463 作者:鴿子 欄目:關系型數據庫

我們都知道查找 Redis 的鍵時,可以使用 keys pattern,但當 key 太多時,keys 命令的效率就很低,如果在線上直接使用,甚至可能發生生產事故,這時候,我們不妨使用 scan 命令。

SCAN 命令是一個基于游標的迭代器(cursor based iterator):

SCAN 命令每次被調用之后, 都會向用戶返回一個新的游標, 用戶在下次迭代時需要使用這個新游標作為 SCAN 命令的游標參數, 以此來延續之前的迭代過程。

當 SCAN 命令的游標參數被設置為 0 時, 服務器將開始一次新的迭代, 而當服務器向用戶返回值為 0 的游標時, 表示迭代已結束。

生成 key

<?php
// 生成1000個
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379, 10);
$redis->select(2);
$arr = [
    'rwer',
    '24erw',
    'rterq4',
    'sdgfd5',
    'dgsdg',
    'sfst',
];
for ($i=0; $i<1000; $i++) {
    $redis->set(md5($i.$arr[$i%6]), md5($arr[$i%6].'sdfsd'));
}
echo "OK".PHP_EOL;

keys 查看個數

keys c*

Redis中用scan替換keys的方法

Redis中使用scan替換keys

scan 遍歷

<?php
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379, 10);
$redis->select(2);
$iterator = null;
// 遍歷前綴
$pattern = 'c*';
$count = 100;
// 務必設置,如果沒掃描到,繼續掃描,而不是返回空,否則while直接退出,遍歷就會不準確
$redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
$total = [];
$i = 0;
// $count可以不設置,非必需參數
while($arr = $redis->scan($iterator, $pattern, $count)) {
    $arrVal = $redis->mget($arr);
    $ret = array_combine($arr, $arrVal);
    $total = array_merge($total, $ret);
    $i++;
}
// var_dump($total);
var_dump($i);
echo count($total).PHP_EOL;

Redis中使用scan替換keys

Redis中用scan替換keys的方法

當然你也可以不使用 \Redis::OPT_SCAN, \Redis::SCAN_RETRY 這兩個參數,自行循環,判斷返回值是不是 false,也能遍歷成功。

以上就是Redis 中如何使用 scan 替換 keys的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

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

AI

共和县| 彰武县| 阆中市| 安远县| 罗山县| 东至县| 曲麻莱县| 镇雄县| 营口市| 凤庆县| 黎城县| 绿春县| 鞍山市| 和平县| 新平| 绥中县| 武鸣县| 靖边县| 公主岭市| 德庆县| 小金县| 八宿县| 闻喜县| 土默特左旗| 炉霍县| 慈利县| 遂宁市| 五河县| 休宁县| 北票市| 班玛县| 武宣县| 五台县| 泸州市| 芮城县| 乐至县| 沛县| 永川市| 偏关县| 临邑县| 高清|