亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

周口市| 永仁县| 大安市| 大同市| 东阿县| 东至县| 安图县| 祁连县| 韶关市| 井陉县| 河曲县| 堆龙德庆县| 卢湾区| 平乐县| 长白| 休宁县| 班戈县| 英吉沙县| 镇江市| 保靖县| 盐津县| 天水市| 肥城市| 上饶市| 株洲县| 鲁山县| 南丹县| 乳山市| 虎林市| 宣武区| 舒兰市| 高雄市| 濮阳市| 南皮县| 凯里市| 化州市| 邯郸市| 苍梧县| 汾阳市| 花垣县| 阿勒泰市|